三角形プリミティブごとに単一の描画呼び出しを作成しているように聞こえますが、これは非常に悪いため、恐ろしい FPS です。描画呼び出しごとにできるだけ多くの三角形を描画することを目指す必要があります。これはいくつかの方法で行うことができます。
- コードをプロファイリングすると、nVidia と AMD の両方が無料で、コードが遅い理由を見つけて、本当に重要なところに集中できるので、それらを使用してください。
- 帯域幅を削減するためのインデックス バッファーとトライアングル ストリップ
- バッチ処理を改善するためのマテリアル タイプ/状態/テクスチャによる頂点のグループ化
- プリミティブ グループのインスタンス化: 1 回の呼び出しで複数のモデル/メッシュを描画
- 冗長な状態変更 (シェーダー、テクスチャ、バッファー、パラメーターの設定) を可能な限り削除します。これは、前述のグループと密接に関連しています。
DX SDK には、これらのそれぞれを実装する例があります。描画できる三角形の正確な量と適切な FPS (vsync が必要な場合は 30 または 60) は、三角形のシェーディングの複雑さによって大きく異なりますが、最も単純に描画する場合は、数百万をプッシュできるはずです簡易。
heiroglyph 3などのオープン ソース DX11 (多くの DX10 プロジェクトは存在しませんが、API はほぼ同じです) エンジンの内部をよく見て、SDK チュートリアルを実行することをお勧めします。
DX10 によるパフォーマンスの向上に関するプレゼンテーションもかなりの数ありますが、提案を詳しく説明する前にコードをプロファイリングしてください。ハードウェア ベンダー自身からのいくつかを次に示します (nVidia と AMD ハードウェアの色分けされたヒント)。