开发者

Textured Primitives in XNA with a first person camera

So I have a XNA application set up. The camera is in first person mode, and the user can move around using the keyboard and reposition the camera target with the mouse. I have been able to load 3D models fine, and they appear on screen no problem. Whenever I开发者_开发问答 try to draw any primitive (textured or not), it does not show up anywhere on the screen, no matter how I position the camera.

In Initialize(), I have:

        quad = new Quad(Vector3.Zero, Vector3.UnitZ, Vector3.Up, 2, 2);

        quadVertexDecl = new VertexDeclaration(this.GraphicsDevice, VertexPositionNormalTexture.VertexElements);

In LoadContent(), I have:

        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;

And in Draw() I have:

        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();

I think I'm doing something wrong in the quadEffect properties, but I'm not quite sure what.


I can't run this code on the computer here at work as I don't have game studio installed. But for reference, check out the 3D audio sample on the creator's club website. They have a "QuadDrawer" in that project which demonstrates how to draw a textured quad in any position in the world. It's a pretty nice solution for what it seems you want to do :-)

http://creators.xna.com/en-US/sample/3daudio

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜