我正在使用 OpenGL 并在我的程序中绘制各种几何形状(正方形、三角形等),每个对象具有不同的纹理。
我测试了使用 VBO 和着色器执行渲染,这很好地为每个对象创建了一个 VBO。当大量对象(150 到 200 之间)时会出现问题......这意味着对函数的调用非常多glDrawElements()
:
glDrawElements (GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
我发现最好的方法是创建一个包含所有要绘制的顶点(顶点、纹理坐标、索引等)的单个 VBO。
这样做的问题是我不能为每个对象使用不同的纹理,因为 VBO 绘制所有几何图形一次。
问题是.. 执行我需要的最佳方式(最佳方式)是什么?不使用已被弃用为glBegin ()
/glEnd ()
或的函数或方法glDrawArrays ()
(我正在使用 open GL 3.0 及更高版本)。
PD:我使用 OpenGL 和 C++。