我有两种方法在做同样的事情现在我想知道他们有什么不同,哪一个能表现得更快。
方法如下:
第1种方法
glBindTexture(GL_TEXTURE_2D, texture[0]);
glBegin(GL_QUADS);
glTexCoord2f( 0, 0); glVertex2f( x, y);
glTexCoord2f( 1, 0); glVertex2f( x+texWidth, y);
glTexCoord2f( 1, 1); glVertex2f( x+texWidth, y+texHeight);
glTexCoord2f( 0, 1); glVertex2f( x, y+texHeight);
glEnd();
x++; y++;
第二种方法
glPushMatrix();
glTranslatef(x, y, 0);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glBegin(GL_QUADS);
glTexCoord2f( 0, 0); glVertex2f( 0.0f, 0.0f);
glTexCoord2f( 1, 0); glVertex2f( 1.0f, 0.0f);
glTexCoord2f( 1, 1); glVertex2f( 1.0f, 1.0f);
glTexCoord2f( 0, 1); glVertex2f( 0.0f, 1.0f);
glEnd();
glPopMatrix();
x++; y++;
最佳答案
在性能方面,您使用的是即时模式,但无论如何都很慢(这是“老”的做法;不幸的是,web上的大多数OpenGL教程都已经过时了)如果你真的关心性能,可以使用VBOs和VAOs这样的缓冲区(gpu端)。
一个很好的现代教程是http://open.gl/在这里介绍VBOs:http://open.gl/drawing