Ich versuche, Texturen zu zeichnen, die auf diesen Physikkörper ausgerichtet sind, dessen Koordinatensystem in der Mitte des Bildschirms liegt. (XNA) Bei Spritebatch ist der Standardursprung in der oberen linken Ecke festgelegt. Ich habe die Texturen richtig positioniert, aber ich habe festgestellt, dass meine Texturen vertikal invertiert sind. Das heißt, eine Pfeilstruktur, die nach oben zeigt, zeigt beim Rendern nach unten. Ich bin mir nicht sicher, wo ich mit der Mathematik falsch liege.
Mein Ansatz ist es, alles in Metereinheiten der Physik umzurechnen und entsprechend zu zeichnen.
Matrix proj = Matrix.CreateOrthographic(scale * graphics.GraphicsDevice.Viewport.AspectRatio, scale, 0, 1);
Matrix view = Matrix.Identity;
effect.World = Matrix.Identity;
effect.View = view;
effect.Projection = proj;
effect.TextureEnabled = true;
effect.VertexColorEnabled = true;
effect.Techniques[0].Passes[0].Apply();
SpriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend, null, DepthStencilState.Default, RasterizerState.CullNone, effect);
m_Paddles[1].Draw(gameTime);
SpriteBatch.End();
wo Paddle :: Draw aussieht wie:
SpriteBatch.Draw(paddleTexture,
mBody.Position,
null,
Color.White,
0f,
new Vector2(16f, 16f), // origin of the texture
0.1875f, SpriteEffects.None, // width of box is 3*2 = 6 meters. texture is 32 pixels wide. to make it 6 meters wide in world space: 6/32 = 0.1875f
0);
Die orthographische Projektionsmatrix scheint mir in Ordnung zu sein, aber ich mache offensichtlich irgendwo etwas falsch! Kann mir bitte jemand helfen, herauszufinden, was ich hier falsch mache?
Vielen Dank
scale
negativ? Tun Sie im Vertex / Pixel-Shader etwas Besonderes für den von Ihnen verwendeten Effekt (insbesondere wie manipulieren / verwenden Sie Texturkoordinaten?). Auch wenn Sie XNA4 verwenden, möchten Sie den Effekt nicht an den übergeben Beginnen Sie mit dem Aufruf des Stapels (), anstatt zu versuchen, ihn manuell aufzurufen?