我正在再次尝试 OpenGL,我想知道如何设计稍后呈现的类。现在,只有一种类型的形状,所以我创建了一个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()
. 当有许多形状时,这不是潜在的性能损失吗?