Der Mond wird mit zwei Draw-Aufrufen gezeichnet, aber beide zeichnen auf der Xbox falsch, sodass ich der Einfachheit halber nur einen Draw anzeige.
So sollte der Mond auf dem PC aussehen:
Wie es auf der XBOX aussieht:
Die Textur flackert, verschwindet, sieht aus wie ein Farbverlauf von unten nach oben, Linien verlaufen durch sie usw., während sich die Kamera bewegt. Zum Beispiel sieht es nach leichtem Bewegen der Kamera folgendermaßen aus: 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);
}
Hier wird der Shader verwendet, hier nichts kompliziertes: http://www.olhovsky.com/xna/Moon.fx
Weiß jemand, warum die Textur auf der Xbox nicht richtig angezeigt wird? Gibt es einen anderen Zustand, den ich vielleicht einstellen sollte?