学習目的で、本当にシンプルな 2D openGL エンジンを構築したいので、最も有名なエンジンがどのように機能するか (または少なくともどれがあなたのアイデアか) を理解したいと思っています。
SpriteBatches を使用すると、エンジンは SpriteBatch ごとに 1 つの描画呼び出しを実行し、単純なスプライトを描画するときにすべてのスプライトに描画呼び出しが必要であることを知っています。SpriteBatch を使用せずに、分離されたスプライトを描画することにのみ関心があるとしましょう。
これが、単純なスプライトの描画に関する私の考えです。スプライトは
、平面とテクスチャで表現されていると思います。すべてのプレーンには、一連の頂点とインデックス、および共通のシェーダーがあります (単純にしておきましょう)。スプライトは一種の配列に格納され、スプライトごとに、エンジンVBO
は現在の平面の頂点を設定して を呼び出す必要がありglBindBuffer
、glBufferData
シェーダーを設定して を呼び出す必要がありますglDrawElements
。次に、VBO がクリアされ、前の操作が次のスプライトに対して繰り返されます。
スプライトを描くのは一般的なルーチンでしょうか?
SpriteBatch について大きな違いは、VBO がすべての平面の頂点を 1 回格納することであり、このため、すべてのスプライトを 1 回のglDrawElements
呼び出しで描画できることだと思います。
私は正しい道を進んでいますか、それとも私の「仮定」は完全に間違っていますか?