私は OpenGL をもう一度試していますが、後でレンダリングされるクラスをどのように設計するのか疑問に思っています。現在、形状は 1 種類しかないため、 の最初のインスタンスが作成されたときに呼び出されるShape静的な VAO メンバーを持つクラスを作成しました。今、方法があります:glGenVertexArrays(1, &vao)Shapevoid Shape::render()
void Shape::render()
{
glBindVertexArray(vao);
glDrawArrays(GL_TRIANGLES, foo, bar);
}
これは良い方法ですか?つまり、実際のプログラムでのすべてのインスタンスShapeが描画されると、 bind が繰り返し呼び出されますが、現在既にバインドされているShape::vao場合、実際には何もしないと思います。vaoその推測は正しいですか?
glBindVertexArray(0)また、の最後にを呼び出すチュートリアルを少し前に見ましたrender()。多くの形状がある場合、パフォーマンスが低下する可能性はありませんか?