通常、メッシュ固有の情報(VBO/VAO)をインスタンス固有の情報(変換、ユニフォームなど)から分離しようとします。ハードウェアインスタンス化のためのVBOの再利用
このように、インスタンス情報を操作するコードの部分は、VBO/VAOについて何も知る必要はなく、その逆もあります。
しかし、最近、glDrawInstancedを使用してハードウェアインスタンスを使用し始めました。インスタンス属性がVAOで結合されているため、懸念の分離がより困難になっています。
通常、VBO/VAOは私の.OBJローダー(これを構築するのに必要なすべての情報を持っています)から構築され、コードの他の部分だけがシェーダーユニフォームを心配しています。さて、これらのコード部分は、インスタンス属性に関する情報を添付するためにVAOの構造を知る必要があります。
通常のレンダリングとインスタンス化されたレンダリングの両方で再利用できるVBOを使用すると、これはさらに厄介なものになります。
メッシュ属性とインスタンス属性を設定する際に懸念事項を分離するための推奨方法はありますか?
私は2つのVAOを持っていると思っていました.1つは通常のレンダリング用で、もう1つはインスタンス化されたレンダリング用で、必要な余分なインスタンス属性を追加しましたが、元のVAOデータを複製、インスタンスのパラメータだけでなく、VBO/VAOの実際の構造を知る必要があります。
ジオメトリに対して別のレベルの抽象化を作成すると、特定の方法で(インスタンス化の有無にかかわらず)データのバッチを作成および描画します。 – Drop
さて、これは私が避けたいと思っていたものです...他に提案がなければ、最終的にやります。 – glopes