1

入力アセンブラーを三角形ストリップに設定して、この 2D 三角形を作成しようとしました。

1.(0.0f, 0.0f, 0.5f)
2.(-0.5f, 0.0f, 0.5f)
3.(-0.5f, -0.5f, 0.5f)

ただし、三角形は描画されませんでした。実際、レンダー ターゲットには何も描画されず、1 本の線も描画されませんでした。2いじってから、座標とを入れ替え3たところ、うまくいきました。意図した通りの三角形が描かれました。この奇妙な行動の理由は何ですか?

4

1 に答える 1

6

頂点を反時計回りの順序で定義すると、Direct3Dはデフォルトで反時計回りの順序で定義された面をカリングするため、背面のカリング中に三角形がカリングされたため、何もレンダリングされませんでした。

DirectXで三角形を描画するときは、2つのことを考慮する必要があります。

  1. 頂点を定義した順序。
  2. 現在使用されているカリングモード。

頂点を定義した順序によって、前面と背面が決まります。前面とは、頂点が時計回りに定義されている面です。頂点を時計回りに定義してみてください。

ここに画像の説明を入力してください

前面と頂点の法線

カリングモードは、後ろ向きの三角形をカリングする方法を指定します。D3D11_CULL_NONEを使用してコードをテストしてみてください。これにより、頂点の定義順序に関係なく、すべての三角形がレンダリングされるようになります。

カリング状態

DirectX11のカリングモード

三角ストリップを描画するときは注意が必要です。偶数の三角形では、背面カリングフラグが自動的に反転するためです。次の図を検討してください。最初の三角形v1v2v3の場合、カリングモードは反時計回りでレンダリングされ、2番目の三角形v2v3v4の場合、カリングモードは時計回りに反転され、それもレンダリングされます。3番目の三角形の場合、カリングモードは再び元に戻ります。このような三角形のストリップをレンダリングする場合は、頂点をv1、v2、v3、v4、...vnの順序で定義する必要があります。

三角ストリップ

三角ストリップ

于 2012-11-09T01:31:13.793 に答える