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