2

古いDirect3Dの本は言う

「...フレームあたり 2000 ~ 4000 ポリゴンを表示しながら、ハードウェア アクセラレーションで許容できるフレーム レートを達成できます...」

Direct3D の 1 つのポリゴンとは何ですか? それらは 1 つのプリミティブ (インデックス付きまたはその他) または 1 つの三角形を意味しますか?

4

5 に答える 5

7

その本は三角形を意味します。そうでなければ、1000 面のポリゴンが必要な場合はどうすればよいでしょうか? フレームごとに 2000 ~ 4000 のこのような形状を実現できますか?

于 2008-10-27T07:02:26.993 に答える
4

実際には、ポリゴンが三角形ではない場合でも、通常は三角形になるようにテッセレーションされるため、それを三角形にする必要があります。(たとえば、クワッドは 2 つの三角形で構成されるなど)。そのための基本的な三角形分割 (テッセレーション) アルゴリズムは非常に単純です。頂点をループして、3 つの頂点ごとに三角形に変えるだけです。

于 2008-10-27T07:02:48.117 に答える
3

ここで、「ポリゴン」とは三角形を指します。全て 。ただし、ご指摘のとおり、パフォーマンスを決定するのは三角形の数だけではありません。

重要な問題は次のとおりです。

  • ストレージの形式 (インデックス付きかどうか、リスト、ファン、またはストリップ)
  • ストレージの場所 (ホスト メモリの頂点配列、ホスト メモリの頂点バッファー、または GPU メモリの頂点バッファー)
  • レンダリングのモード (ホストから完全に発行されるか、インスタンス化によって発行される描画プリミティブ コマンドです)
  • 三角形のサイズ

これらの変数を組み合わせると、パフォーマンスに 2 倍以上の変動が生じる可能性があります。

同様に、アプリケーションが実行されているハードウェアは、現実の世界ではパフォーマンスが 10 倍以上異なる場合があります。2005 年にローエンドだった GPU (または統合グラフィックス プロセッサ) は、意味のあるメトリックで現在よりも 10 倍から 100 倍遅くなります。最先端のGPU。

全体として、2 ~ 4000 個の三角形を使用するという推奨事項は、ばかげて時代遅れであるため、今日では完全に無視する必要があります。今日のローエンドのハードウェアでも、妥当な条件下では 1 フレームに 100,000 個の三角形を簡単にプッシュできます。さらに、今日の視覚的に興味深いアプリケーションのほとんどは、三角形の数ではなく、ピクセル シェーディングのパフォーマンスに支配されています。

現在、良好なトライアングル スループットを達成するための一般的な経験則は次のとおりです。

  • [インデックス付き] 三角形 (または四角形) リストを使用する
  • GPU メモリの頂点バッファーにデータを格納する
  • 各描画プリミティブ呼び出しで大きなバッチを描画 (数千のプリミティブ)
  • 画面上で主に >= 16 ピクセルの三角形を使用する
  • ジオメトリ シェーダーを使用しないでください (特にジオメトリ増幅の場合)。

これらすべてを実行すると、今日のどのマシンでも、数万または数十万の三角形を簡単にレンダリングできるはずです。

于 2008-11-17T01:26:52.767 に答える
2

このページによると、ポリゴンは Direct3d で n 辺になっています。

C# の場合:

public static Mesh Polygon(
    Device device,
    float length,
    int sides
)
于 2008-10-27T06:52:37.137 に答える
0

他の人が言ったように、ここでのポリゴンは三角形を意味します。三角形の主な利点は、3 点が平面を定義するため、定義上、三角形が同一平面上にあることです。これは、三角形内のすべてのポイントが、ポリゴン ポイントの線形結合として正確に定義されることを意味します。より多くの頂点は必ずしも同一平面上にあるとは限らず、一意の曲面を定義しません。

グラフィックスよりもメカニカル モデリングの利点は、三角形も変形できないことです。

于 2009-02-13T13:56:26.540 に答える