使用SlimDX进行奇怪的渲染(面孔)

时间:2012-04-20 20:45:36

标签: c# directx slimdx directx-11

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

Problem with the rendering

我使用这个顶点着色器:

    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

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

请提前帮助和谢谢!

1 个答案:

答案 0 :(得分:0)

发现了问题。它只是索引缓冲区中顶点的错误顺序。对我感到羞耻:)谢谢大家的帮助!