1

このチュートリアルの下部にあるコードを使用して、assimp を使用してメッシュをロードしています。 メッシュの読み込み

そのため、メッシュをロードし、最初のメッシュを vbo にロードしてから、それらを vao にリンクします。

glGenVertexArrays(1, &_vertexArray1); //Bind to first VAO
glBindVertexArray(_vertexArray1);
glGenBuffers(1, &_vertexBufferCube1);
glBindBuffer(GL_ARRAY_BUFFER, _vertexBufferCube1);
glBufferData(GL_ARRAY_BUFFER, g_point_count * 3 * sizeof (float), &g_vp[0], GL_STATIC_DRAW);

glEnableVertexAttribArray(loc1);
glVertexAttribPointer(loc1, 3, GL_FLOAT, GL_FALSE, 0, NULL);
glEnableVertexAttribArray(loc2);
glVertexAttribPointer(loc2, 3, GL_FLOAT, GL_FALSE, 0, NULL);

しかし、どうすれば 2 番目のメッシュを vbo にロードできますか? のように、2 番目のメッシュを に含める必要がありg_vp[g_point_count * 3 * sizeof (float)]ますか? 私はそれを試しましたがうまくいきませんでしたが、何か他のことが間違っている可能性があります。

4

1 に答える 1

0

vao ベースの描画を使用している場合は、異なる vaos に異なる vbo を格納できます。シーンを描画しているときは、glBindVertexArray(vao) と glBindVertexArray(0) を使用して異なる vaos 間で切り替えます。より良い解決策もあります。1 つの vao に複数のオブジェクトを格納できますが、各オブジェクトのインデックス データを記録します。次に、インデックスを指定してglDrawElementsBaseVertexを使用して各オブジェクトを描画できます。

このチュートリアルでは、glDrawElementsBaseVertex + assimp http://ogldev.atspace.co.uk/www/tutorial38/tutorial38.htmlを使用してレンダリングを行う例を示します 。

于 2013-12-09T18:10:46.180 に答える