Bulan digambar dengan dua panggilan undian, tetapi keduanya menggambar salah di xbox jadi saya hanya menampilkan satu undian untuk kesederhanaan.
Beginilah tampilan bulan di PC:
Bagaimana tampilannya di XBOX:
Tekstur berkedip, menghilang, tampak seperti gradien dari bawah ke atas, garis-garis melewatinya, dan seterusnya ketika kamera bergerak. Misalnya setelah memindahkan kamera sedikit terlihat seperti ini: http://olhovsky.com/xna/xbox_moon2.png
public void Draw(Camera cam)
{
GraphicsDevice gd = Game3.GDM.GraphicsDevice;
Vector3 position = Position + cam.Position;
Matrix world = Matrix.CreateScale(2.0f);
world *= Matrix.CreateConstrainedBillboard(
position, cam.Position, Vector3.Down, cam.Forward, null);
_moonEffect2.Parameters["World"].SetValue(world);
_moonEffect2.Parameters["View"].SetValue(cam.View);
_moonEffect2.Parameters["Projection"].SetValue(cam.Projection);
// Draw blended part of moon only.
_moonEffect2.Parameters["AlphaTestDirection"].SetValue(-1);
gd.BlendState = BlendState.AlphaBlend;
gd.RasterizerState = RasterizerState.CullNone;
gd.DepthStencilState = DepthStencilState.DepthRead;
ScreenQuadDraw.DrawQuad(_moonQuad, _moonEffect2);
}
Berikut adalah shader yang digunakan, tidak ada yang rumit di sini: http://www.olhovsky.com/xna/Moon.fx
Adakah yang tahu mengapa tekstur tidak ditampilkan dengan benar di xbox? Apakah ada keadaan lain yang mungkin harus saya atur?
Jawaban:
Solusinya adalah menghapus input warna yang tidak digunakan dari shader.
Shader piksel lama:
Pixer shader baru:
sumber
color
nilai diatur dari tekstur sebelum digunakan dengan cara baik, sehingga nilai awalcolor
seharusnya tidak masalah. Saya tidak tahu mengapa ini terjadi. Namun moral, adalah tidak memiliki input yang tidak digunakan untuk fungsi shader Anda.