我正在再次尝试 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(). 当有许多形状时,这不是潜在的性能损失吗?