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

C# 使用SlimDX(面上的孔)进行奇怪的渲染,c#,directx,slimdx,directx-11,C#,Directx,Slimdx,Directx 11,我在使用SlimDX DirectX 11渲染简单的旋转立方体时遇到了一个问题。立方体正在旋转,下面是我得到的图像: 我使用这个顶点着色器: float4x4 WorldViewProj : register(c0); float4 VShader(float4 position : POSITION) : SV_POSITION { return mul(float4(position.xyz, 1.0), WorldViewProj); }

我在使用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;
首先,我看到了这个问题:

而且,可能矩阵有问题,因为我既不转置视图也不转置投影,而是转置世界-在相反的情况下,什么都不渲染。但即使我将视图矩阵和投影矩阵都设置为单位矩阵,洞仍然存在


请提前帮助和感谢

问题被发现了。这只是索引缓冲区中顶点的顺序错误。我真丢脸:谢谢大家的帮助

我现在还不能确定,但是你不是在Matrix.PerspectiveFovLH中为近平面指定了-1吗?如果是,为什么不设置正值?胡乱猜测:z缓冲区分辨率太小?即使设置为0.0001f或1f,图片也完全相同。分辨率?嗯,我使用新的Texture2D创建缓冲区,它的大小与渲染窗体的大小完全匹配。而format是format.D32_。如果发现问题。这只是索引缓冲区中顶点的顺序错误。我真丢脸:谢谢大家的帮助!