自分の DirectX 11 ゲーム エンジンで Bullet Physics を使用しており、bullet が提供するデバッグ描画クラスを使用したいと考えています。基本的に、箇条書きで描画する必要があるすべての線を受け取るクラスを作成しています。DirectX 11 で 3D ラインを描画する簡単で高速な方法はありますか (できればバッファーやシェーダーなどを使用せずに)?
3 に答える
残念ながら、簡単な方法はありません。ライン ポイントを含む頂点バッファーを作成する必要があります。複数の線を描画する場合は、すべての頂点を 1 つのバッファーに入れて、パフォーマンスを最適化します。
DirectX 10 では FFP が削除されているため、単純なシェーダーが必要です。頂点シェーダーはおそらくビューと投影変換で頂点を変換し、ピクセル シェーダーは一定の色を返します (必要に応じて)。
次に、適切なトポロジ (ライン リスト) を使用して頂点バッファーを描画します。
簡単な方法 (Jesus Ramos の回答や OpenGL のような) がない理由glBegin(GL_LINES)
は、効率的に実装できないためです。必要以上のデータを GPU に転送することが常に必要です。そのため、バッファを使用して効率的なコードを書くのはプログラマ次第です。
とを使用して、単純な線を描画しますLP3DXLINE
。行の長さ 2 (開始、終了) の配列でD3DXCreateLine
呼び出すと、機能するはずです。Draw
編集: これは明らかに DX9 のみです。他の誰かに役立つ場合に備えて、ここに答えを残してください。
照らされたワイヤーフレームで三角形を使用し、2 つの頂点を同じ場所にする可能性があります: x1y1z1,x2y2z2,x2y2z2 DBPro でこれを行い、動作します。