3

頂点のフィールドをレンダリングする単純な DirectX アプリを作成しました。頂点は次のようにレンダリングされます (上から見た場合):

|\|\|\|\|
|\|\|\|\|

各三角形は次のようにレンダリングされます。

1
|\
2 3

これは、ポリゴンが反時計回りでレンダリングされていないことを意味するはずですが、そうです。とにかく上から見ると飛行機は完璧です。

ただし、別のレベルから見ると、一部のポリゴンが透明になり、その背後にあるジオメトリが見えます。これが起こっている場所のいくつかを強調しました。

これは基本的な初心者の問題の一部だと思います。私は何が欠けていますか?私のラスタライザーの説明は次のとおりです。

new RasterizerStateDescription
                                {
                                    CullMode = CullMode.Front,
                                    IsAntialiasedLineEnabled = true,
                                    IsMultisampleEnabled = true,
                                    IsDepthClipEnabled = true,
                                    IsFrontCounterclockwise = false,
                                    IsScissorEnabled = true,
                                    DepthBias = 1,
                                    DepthBiasClamp = 1000.0f,
                                    FillMode = FillMode.Wireframe,
                                    SlopeScaledDepthBias = 1.0f
                                };

代替テキスト

4

2 に答える 2

4

これは仕様によるものです。FillMode.Wireframe各三角形のエッジのみを線として描画します。それで全部です。

最初のパスはソリッド フィル モードと深度書き込みをオンにしてカラー マスク ( RenderTargetWriteMaskD3D11 用語で) を実行し、2 番目のパスは深度テストをオン (ただし深度書き込みはオフ) でワイヤーフレーム モードをオンにします。線と三角形は同じ方法でラスタライズされないため、おそらく深度バイアスも必要になるでしょう (そして、それらの z は同じフラグメント位置で異なる可能性があります)。

ところで、この手法は隠線除去として知られています。詳細については、このプレゼンテーションを確認できます。

于 2011-01-19T11:14:00.487 に答える
0

結局、深度ステンシルバッファが設定されていませんでした。しかたがない。

于 2011-03-18T01:56:13.630 に答える