Итак, у меня установлено приложение XNA. Камера находится в режиме от первого лица, и пользователь может перемещаться с помощью клавиатуры и перемещать цель камеры с помощью мыши. Мне удалось нормально загрузить 3D-модели, и они появляются на экране без проблем. Всякий раз, когда я пытаюсь нарисовать какой-либо примитив (текстурированный или нет), он не появляется нигде на экране, независимо от того, как я позиционирую камеру.
В Initialize () у меня есть:
quad = new Quad(Vector3.Zero, Vector3.UnitZ, Vector3.Up, 2, 2);
quadVertexDecl = new VertexDeclaration(this.GraphicsDevice, VertexPositionNormalTexture.VertexElements);
В LoadContent () у меня есть:
quadTexture = Content.Load<Texture2D>(@"Textures\brickWall");
quadEffect = new BasicEffect(this.GraphicsDevice, null);
quadEffect.AmbientLightColor = new Vector3(0.8f, 0.8f, 0.8f);
quadEffect.LightingEnabled = true;
quadEffect.World = Matrix.Identity;
quadEffect.View = Matrix.CreateLookAt(cameraPosition, cameraTarget, Vector3.Up);
quadEffect.Projection = this.Projection;
quadEffect.TextureEnabled = true;
quadEffect.Texture = quadTexture;
А в Draw () у меня есть:
this.GraphicsDevice.VertexDeclaration = quadVertexDecl;
quadEffect.Begin();
foreach (EffectPass pass in quadEffect.CurrentTechnique.Passes)
{
pass.Begin();
GraphicsDevice.DrawUserIndexedPrimitives<VertexPositionNormalTexture>(
PrimitiveType.TriangleList,
quad.Vertices, 0, 4,
quad.Indexes, 0, 2);
pass.End();
}
quadEffect.End();
Я думаю, что я делаю что-то не так в свойствах quadEffect, но я не совсем уверен, что.