座標系の原点が画面の中心にあるこの物理ボディに合わせてテクスチャを描画しようとしています。(XNA)Spritebatchのデフォルトの原点は左上隅に設定されています。テクスチャを正しく配置しましたが、テクスチャが上下反転していることに気付きました。つまり、レンダリング時に上向きの矢印テクスチャが下向きになります。数学のどこが間違っているのかわかりません。
私のアプローチは、すべてを物理のメートル単位に変換し、それに応じて描画することです。
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();
ここで、Paddle :: Drawは次のようになります。
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);
正射投影行列は私には問題ないように見えますが、明らかにどこかで問題が発生しています!誰かが私がここで何が間違っているのかを理解するのを助けてくれますか?
ありがとう
scale
負のは?使用しているエフェクトの頂点/ピクセルシェーダーで何か特別なことをしますか(特に、テクスチャ座標をどのように操作/使用しますか?)また、XNA4を使用している場合、エフェクトをに渡したくないですか?手動で呼び出すのではなく、バッチのBegin()呼び出しですか?