0

だから私は基本的に私のプロジェクトのためのいくつかの情報をチェックしたい. GTX 460 ビデオ カードを使用しています。画面に 20k の三角形を印刷して DX10 プログラムを作成したところ、リリース ビルドで 28 FPS が得られました。これらのすべての三角形はそれらの内部で DrawIndexed を呼び出すため、これはもちろん、非常に多くの描画を呼び出すオーバーヘッドです。

とにかく、知りたいのですが、これらの機能を使用して、どの FPS で画面上にどれだけの三角形を描くことができるでしょうか? 20,000 個の三角形は、ゲーム シーンにいくつかの優れたモデルをロードするのに十分ではないと思います。

私のひどい英語でごめんなさい。

4

1 に答える 1

3

三角形プリミティブごとに単一の描画呼び出しを作成しているように聞こえますが、これは非常に悪いため、恐ろしい FPS です。描画呼び出しごとにできるだけ多くの三角形を描画することを目指す必要があります。これはいくつかの方法で行うことができます。

  • コードをプロファイリングすると、nVidia と AMD の両方が無料で、コードが遅い理由を見つけて、本当に重要なところに集中できるので、それらを使用してください。
  • 帯域幅を削減するためのインデックス バッファーとトライアングル ストリップ
  • バッチ処理を改善するためのマテリアル タイプ/状態/テクスチャによる頂点のグループ化
  • プリミティブ グループのインスタンス化: 1 回の呼び出しで複数のモデル/メッシュを描画
  • 冗長な状態変更 (シェーダー、テクスチャ、バッファー、パラメーターの設定) を可能な限り削除します。これは、前述のグループと密接に関連しています。

DX SDK には、これらのそれぞれを実装する例があります。描画できる三角形の正確な量と適切な FPS (vsync が必要な場合は 30 または 60) は、三角形のシェーディングの複雑さによって大きく異なりますが、最も単純に描画する場合は、数百万をプッシュできるはずです簡易。

heiroglyph 3などのオープン ソース DX11 (多くの DX10 プロジェクトは存在しませんが、API はほぼ同じです) エンジンの内部をよく見て、SDK チュートリアルを実行することをお勧めします。

DX10 によるパフォーマンスの向上に関するプレゼンテーションもかなりの数ありますが、提案を詳しく説明する前にコードをプロファイリングしてください。ハードウェア ベンダー自身からのいくつかを次に示します (nVidia と AMD ハードウェアの色分けされたヒント)。

于 2012-09-26T16:25:57.597 に答える