为数组调用OpenGL glGenXXX函数是否比单个元素更为理想?

为数组调用OpenGL glGenXXX函数是否比单个元素更为理想?,opengl,Opengl,我刚刚开始学习OpenGL,我想知道调用函数如glgenvertexarray或glGenBuffers传递数组与多次调用相比是否有任何好处(考虑到实际调用可以忽略不计)。我试图找到关于这些函数在幕后做什么的细节,但我没有发现任何有用的东西 举个例子,我想知道 GLuint vbo[2]; glGenBuffers(2, vbo); glBindBuffer(GL_ARRAY_BUFFER, vbo[0]); glBufferData(GL_ARRAY_BUFFER, sizeof(verti

我刚刚开始学习OpenGL,我想知道调用函数如
glgenvertexarray
glGenBuffers
传递数组与多次调用相比是否有任何好处(考虑到实际调用可以忽略不计)。我试图找到关于这些函数在幕后做什么的细节,但我没有发现任何有用的东西

举个例子,我想知道

GLuint vbo[2];
glGenBuffers(2, vbo);

glBindBuffer(GL_ARRAY_BUFFER, vbo[0]);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices1), vertices1, GL_STATIC_DRAW);

glBindBuffer(GL_ARRAY_BUFFER, vbo[1]);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices2), vertices2, GL_STATIC_DRAW);
与其他方式相比,有任何显著的潜在好处

GLuint vbo0, vbo1;

glGenBuffers(1, &vbo0);
glBindBuffer(GL_ARRAY_BUFFER, vbo0);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices1), vertices1, GL_STATIC_DRAW);

glGenBuffers(1, &vbo1);
glBindBuffer(GL_ARRAY_BUFFER, vbo1);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices2), vertices2, GL_STATIC_DRAW);

根据经验,您应该尽量减少OpenGL指令的数量。@rabbi76这是有道理的,但我正在寻找一个更具洞察力的答案。这并不总是实用的,有时会妨碍可读性。这不是答案,而是评论。不创建对象,它只是为对象保留名称ID,操作可能很简单。最像是在初始化时使用
glGenBuffers
,而不是在每个帧中连续使用,因此没有相关的缺点。无论如何,OpenGL规范只是指定了什么,而不是如何指定。OpenGL驱动程序是由硬件供应商编写的,也是唯一了解它的人。根据经验,您应该尽量减少OpenGL指令的数量。@rabbi76这是有道理的,但我一直在寻找更深刻的答案。这并不总是实用的,有时会妨碍可读性。这不是答案,而是评论。不创建对象,它只是为对象保留名称ID,操作可能很简单。最像是在初始化时使用
glGenBuffers
,而不是在每个帧中连续使用,因此没有相关的缺点。无论如何,OpenGL规范只是指定了什么,而不是如何指定。OpenGL驱动程序是由硬件供应商编写的,也是唯一了解它的人。