我有两种方法正在做同样的事情。现在我想知道他们的差异是什么,哪个可以更快地执行。 以下是方法: 第一种方法
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++;
答案 0 :(得分:2)
关于性能,你使用的是立即模式,无论如何都很慢(它是“旧的”做事方式;遗憾的是,网上的大多数OpenGL教程都已经过时了)。如果您真的关心性能,请使用缓冲区(gpu端),如VBO和VAO。
一个很好的现代教程是http://open.gl/,它在这里介绍了VBO:http://open.gl/drawing
答案 1 :(得分:0)
第二种方法更快,因为它正在翻译整个矩阵,并且没有像方法一那样做很多计算。
答案 2 :(得分:-1)
第二种方法要快得多,因为它可以用较少的计算来转换整个QUAD矩阵。