私はレンダラーを作成しており、vao/vbo/shader の管理を処理する最終的な方法を選択する段階にあります。Web 上で、実際に何が推奨されているかについて非常に矛盾した情報を見つけました。現在のアイデアは次のとおりです。
- 1 つの VBO にすべてのメッシュが連続して格納されます。
- 「シェーダー マッピング」ごとに VAO を作成し、特定のポインター マッピングを VBO に格納します。(「シェーダー マッピング」、同一の入力を持つ異なるシェーダー全体で一貫しています)
次に、エンティティを「シェーダー マッピング」で並べ替え、メイン VBO のオフセットを使用してレンダリングし、シェーダーと VAO の切り替えを最小限に抑えます。何かのようなもの:
for(shaders by mapping)
bindVAO(); //set pointers
for(shader)
for(entity using shader)
entity.setUniforms();
drawArrays(entity.offset, entity.size);
これにはかなりの量のリファクタリングが含まれるため、このソリューションが最適かどうかを尋ねたかったのです。また、単一の VBO で複数のインターリーブ形式を使用できるかどうかも疑問です。