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 プロジェクションが正しくない
そして、おそらく、行列に何か問題があります (ビューも投影も転置せず、世界を転置するため、逆の場合は何もレンダリングされません)。しかし、ビュー行列と射影行列の両方を単位行列に設定しても、「穴」はまだそこにあります。
助けてください、事前に感謝します!