0

最近、VAO (Vertex Array Object) について学びました。これまでのところ、それらは非常に優れているように見えますが、解決できない問題があります。私はたくさんのモデルを持っています。それらの頂点状態は別々の VAO に保存されているので、

    glBindVertexArray(VAO);

これのインスタンスの描画を開始するために必要なのはこれだけです。問題は、追加の VAO をバインドする必要があることです。

    glDrawElementsInstanced();

電話。そのため、オフセット、UV オフセット、カラー オーバーレイなどのデータが含まれています。これをバインドすると、前のものは自分自身をアンバインドするように見えます。これは OpenGL では理にかなっていると思いますが、両方をアクティブにするために何をすればよいかわかりません?

アイデアは、フレームごとにデータをアップロードせずに、同じモデルを共有するすべての静的オブジェクトを描画することです。これは完全に間違ったアプローチですか?

4

1 に答える 1

3

これをバインドすると、前のものは自分自身をバインド解除するように見えますが、これは OpenGL では理にかなっていると思いますが、両方をアクティブにするために何をすべきかわかりませんか?

もちろん解禁です。それがOpenGLの仕組みです。これはステート マシンであり、同時に 2 つのステートをアクティブにする必要があります。

アイデアは、フレームごとにデータをアップロードせずに、同じモデルを共有するすべての静的オブジェクトを描画することです。

変更されない場合は、変更しないでください。頂点コンポーネントをバインドしてアクティブ化するだけです (ここで説明されているように)。

于 2013-11-05T16:53:55.790 に答える