Estoy tratando de dibujar texturas alineadas con este cuerpo de física cuyo origen del sistema de coordenadas está en el centro de la pantalla. (XNA) Spritebatch tiene su origen predeterminado establecido en la esquina superior izquierda. Obtuve las texturas para colocarlas correctamente, pero noté que mis texturas están invertidas verticalmente. Es decir, una textura de flecha apuntando hacia arriba, cuando se representa apuntando hacia abajo. No estoy seguro de dónde me estoy equivocando con las matemáticas.
Mi enfoque es convertir todo en unidades de medidor de física y dibujar en consecuencia.
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();
donde se ve 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);
La matriz de proyección ortográfica me parece bien, ¡pero obviamente estoy haciendo algo mal en alguna parte! ¿Alguien puede ayudarme a descubrir qué estoy haciendo mal aquí?
Gracias
scale
negativo? ¿Hace algo especial en el sombreador de vértices / píxeles para el efecto que está usando (específicamente, ¿cómo manipula / usa las coordenadas de textura?) Además, si está usando XNA4, ¿no desea pasar el efecto al ¿Iniciar () la llamada del lote, en lugar de intentar invocarlo manualmente?