所以我设置了一个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属性中做错了,但我不太确定是什么。
答案 0 :(得分:0)
由于我没有安装游戏工作室,因此我无法在计算机上运行此代码。但作为参考,请查看创作者俱乐部网站上的3D音频样本。他们在该项目中有一个“QuadDrawer”,演示了如何在世界任何位置绘制纹理四边形。对于你想要做的事情来说,这是一个非常好的解决方案:-)