OpenGL四重渲染优化

Kev*_*ity 4 opengl optimization 2d

我在openGL中绘制四边形.我的问题是,是否有任何额外的性能提升:

// Method #1

glBegin(GL_QUADS);
// Define vertices for 10 quads
glEnd();
Run Code Online (Sandbox Code Playgroud)

...为10个四边形中的每一个执行此操作:

// Method #2

glBegin(GL_QUADS);
// Define vertices for first quad
glEnd();

glBegin(GL_QUADS);
// Define vertices for second quad
glEnd();

//etc...
Run Code Online (Sandbox Code Playgroud)

在这种情况下,所有四边形都使用相同的纹理.

Jes*_*der 10

是的,第一个更快,因为每次调用glBeginglEnd更改OpenGL状态.

然而,更好的是,与一次调用glBeginglEnd(如果你有大量顶点)一样,是用glVertexPointer(和朋友)传递所有顶点,然后调用glDrawArraysglDrawElements.这将一举将所有顶点发送到GPU,而不是通过glVertex3f重复调用递增.