0

なんらかの理由でこれを診断するのは驚くほど困難ですが、ここにいる誰かが何が問題なのかを非常に迅速に判断できると思います.

私には、ポリゴンが時計回りに巻かれるべきときに反時計回りに描かれているように見えます。つまり、ポリゴンは外側ではなく内側を向いています。両面 (前面と背面) で Directx 塗りつぶしポリゴンを作成する別の方法 (冗長ポリゴンを作成する以外) があるかどうか疑問に思っています。

レンダリングされたモデルの複数のスクリーンショットを次に示します (エルクのおもちゃです)。

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

比較のために、別のモデルが正しくレンダリングされ、次のようになります。

ここに画像の説明を入力

ご覧いただきありがとうございます

4

1 に答える 1

3

Adam Miles が言ったように、それはDepth Testingの欠如である可能性が非常に高いです。以下は、固定機能パイプライン深度テストのリンクです: Z Buffer

使用している DirectX のバージョンに応じて、別の方法で設定する必要があります。最終的に、次のように HLSL で深度テストを有効にします。

ZEnable = true;

固定機能のパイプラインを使用している場合は、デバイスのレンダリング ステートを設定する必要があります。

dev->SetRenderState(D3DRS_ZENABLE, TRUE);

ただし、三角形の「ワインディング」、別名Cull モードが原因である場合は、次のように HLSL シェーダーで変更できます。

CullMode = none; // Where Cullmode can be none, ccw, or cw

ここでも、固定機能のパイプラインを使用している場合は、次のようにデバイスのレンダリング状態を設定できます。

dev->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
//D3DCULL_NONE, D3DCULL_CCW or D3DCULL_CW

cullmodeを none に設定すると、両側が描画されます。これらのスクリーンショットから判断すると、これら 2 つの問題のいずれかが発生していると確信しています。幸運を!

于 2013-07-26T23:50:59.140 に答える