Текстурированные примитивы в XNA с камерой от первого лица - PullRequest
1 голос
/ 12 апреля 2010

Итак, у меня установлено приложение 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, но я не совсем уверен, что.

1 Ответ

0 голосов
/ 12 апреля 2010

Я не могу запустить этот код на компьютере здесь, на работе, так как у меня не установлена ​​игровая студия. Но для справки, ознакомьтесь с 3D аудио образцом на сайте клуба создателя. В этом проекте у них есть «QuadDrawer», который демонстрирует, как нарисовать текстурированный квад в любой позиции в мире. Это очень хорошее решение для того, что вы, похоже, хотите сделать :-)

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

...