申し訳ありませんが、あなたの質問スレッドにコメントを追加しようとしていましたが、やりすぎたようです。私の開発経験はDX 11の観点からのものなので、この一部はOpenGLで保持されない可能性があります
データのメモリ局所性は確かに重要な役割を果たします。しかし、これに関係する他のいくつかの項目、つまりご存じのようにデータの幅があります。私はいくつかのGPUを使用しており、特定の転換点に基づいて、いくつかのGPUで非常に高いパフォーマンスを達成しています。たとえば、私の古いAMD r290では、1つを超える追加コストなしで、基本的に最大4つのfloat4を頂点バッファーに渡すことができましたが、> 4をポストすると、測定可能な低下がありました(フレーム内)割合)。これは純粋に私の記憶から外れているので、最良の事例です。しかし、GPUアーキテクチャは常に変化しており、今日のパフォーマンスを向上させるニッチなテクニックは、明日のパフォーマンスの悩みの種かもしれません。私'
そうは言っても、頂点の順序付けについて質問しました。確かにそれはわずかに役立ちます。パフォーマンスの向上は、これをインデックスバッファーと組み合わせると、ハードウェアが既に計算された頂点を最適化してキャッシュできるようになります。あなたは確かにあなたの考えに従って特別に注文したトライアングルストリップなどからさらに多くの利益を得るかもしれません。私が行うモデルレンダリングのほとんどは、インスタンス化されたインデックス/頂点ベースの最適化モデルであり、循環モーションエフェクト(たとえば、ツリーのブランチ)に対して少量のルックアップを使用します。これらの場合、ツリーのブランチ全体が同じ値を検索します。したがって、ここでもキャッシングを利用できます。
私自身から要約すると言えることは次のとおりです。
- あなたのゲーム/アプリケーションの開発はまだ時期尚早に最適化しないようにしながら、最初は最適化を考えすぎないようにしてください。戻って新しい機能を追加する必要がある場合、すべての作業を失う可能性があります。あなたはおそらく私の習慣を持っています> <、最高のパフォーマンスとテクニックを得ようとするのが大好きです
- GPUアーキテクチャは多様であり、1つの長所は別の短所を反映することができます。AMDとNvidiaは、開発者がゲームをアーキテクチャに最適化することで有名です。理由は、それぞれに長所と短所があります。開発の途中をたどるのが最適な場合があります。ハードウェアベンダーベースの機能は使用しないでください(ここの意見)。(それに加えて、いくつかのパック形式はAMDにのみ存在します)。
これらは私が経験したほんの一部の考えと経験です。あなたはこれらのまさにトピックの周りであなたが手に入れるべきであるたくさんの本が世に出ています。多くの人があなたが提案していることを説明するのを見たことはありませんが、それは間違いではありません。幸運を。