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;

まず最初に、この質問を見ました: SlimDX 使用時のクリッピングと 3D プロジェクションが正しくない

そして、おそらく、行列に何か問題があります (ビューも投影も転置せず、世界を転置するため、逆の場合は何もレンダリングされません)。しかし、ビュー行列と射影行列の両方を単位行列に設定しても、「穴」はまだそこにあります。

助けてください、事前に感謝します!

4

1 に答える 1

0

問題が見つかりました。これは、インデックス バッファー内の頂点の順序が間違っているだけです。残念です:) 助けてくれてありがとう!

于 2012-05-07T08:46:48.437 に答える