0

我在使用 SlimDX (DirectX 11) 渲染一个简单的旋转立方体时遇到了问题。立方体正在旋转,这些是我得到的图像:

渲染问题

我使用这个顶点着色器:

    float4x4 WorldViewProj : register(c0);
    float4 VShader(float4 position : POSITION) : SV_POSITION
    {
        return mul(float4(position.xyz, 1.0), WorldViewProj);
    }

这就是我准备 WorldViewProj 的方式:

ProjectionMatrix = Matrix.PerspectiveFovLH((float)(Math.PI / 4.0), 1f, -1, 20);
ViewMatrix = Matrix.LookAtLH(new Vector3(0f, 0, ypos), new Vector3(0f, 0, 10), new Vector3(0f, 1f, 0f)); 

Matrix positionMatrix = Matrix.Translation(position);
Matrix rotationMatrix = Matrix.RotationYawPitchRoll(rotation.X, rotation.Y, rotation.Z);
Matrix scaleMatrix = Matrix.Scaling(scale);
Matrix worldMatrix = rotationMatrix * scaleMatrix * positionMatrix;
worldMatrix = Matrix.Transpose(worldMatrix);

Matrix WorldViewProj = ViewMatrix * ProjectionMatrix * worldMatrix;

首先我看到了这个问题:Incorrect Clipping and 3D Projection when using SlimDX

而且,矩阵可能有问题(因为我既不转置视图也不转置投影,而是转置世界——在相反的情况下,没有渲染任何东西)。但即使我将视图矩阵和投影矩阵都设置为单位矩阵,“洞”仍然存在。

请提前帮助和感谢!

4

1 回答 1

0

问题找到了。这只是索引缓冲区中顶点的错误顺序。真丢脸:)谢谢大家的帮助!

于 2012-05-07T08:46:48.437 回答