2

I have the two methods hich are doing the same thing. Now I am wondering what is their differences and which one can perform faster. Here are the methods: 1th Method

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++;

2th Method

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++;
4

3 回答 3

2

关于性能,您使用的是即时模式,无论如何它都很慢(它是“旧”的做事方式;不幸的是,网络上的大多数 OpenGL 教程都已经过时了)。如果您真的关心性能,请使用 VBO 和 VAO 之类的缓冲区(gpu 端)。

一个不错的现代教程是http://open.gl/,它在这里介绍了 VBO:http: //open.gl/drawing

于 2013-06-02T07:35:10.943 回答
0

第二种方法要快得多,因为它正在转换整个矩阵,并且不像方法一中那样做很多计算。

于 2013-06-01T06:29:46.653 回答
-1

第二种方法要快得多,因为它用较少的计算转换整个 QUAD 矩阵。

于 2013-06-03T01:09:16.297 回答