Buenas!
Estoy investigando el mundo de XNA y me he metido directamente al 3D. Soy capaz de cargar un modelo (un tanque) perfectamente, y lo voy rotando sin problemas. Hasta que soy yo el que lo quiere girar y no el método upsate de manera automática. Cuando cargo una imagen para hacer el típico joystick, el renderizado se me estropa, y se me cargan las orugas que deberían estar "detras" como si estuvieran delante, y cosas así.
Cómo puedo arreglar esto? O no debería cargar una imagen y debo pintarlo directamente? Esty programando para Windows phone
Un saludo!
Parece un tema de estados de renderizado, que se ha desactivado el ZBuffer al pintar el rectángulo... si pones un poco de código mejor.
Buenas!
Tienes razón, con código siempre mejor, pero como era tan poquito... : )
En el resto de código no hago nada más, en el método LoadContent cargo el modelo y la imagen y casi nada más
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend);
spriteBatch.Draw(bullseye, new Vector2(50, 50), Color.White);
spriteBatch.End();
// Copy any parent transforms.
Matrix[] transforms = new Matrix[tank.Bones.Count];
tank.CopyAbsoluteBoneTransformsTo(transforms);
// Draw the model. A model can have multiple meshes, so loop.
foreach (ModelMesh mesh in tank.Meshes)
{
// This is where the mesh orientation is set, as well as our camera and projection.
foreach (BasicEffect effect in mesh.Effects)
{
effect.World = transforms[mesh.ParentBone.Index] * Matrix.CreateTranslation(tankPosition);
effect.View = Matrix.CreateRotationY(cameraRotationY) * Matrix.CreateRotationZ(cameraRotationZ) * Matrix.CreateLookAt(cameraPosition, Vector3.Zero, Vector3.Up);
effect.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45.0f), aspectRatio, 1.0f, 10000.0f);
}
// Draw the mesh, using the effects set above.
mesh.Draw();
}
base.Draw(gameTime);
}
Muchas gracias!
Habilita el Z Buffer anstes de pintar el tanque...
GraphicsDevice.DepthStencilState = DepthStencilState.Default;
Bieeeen!
Mil gracias!!