2

マウスを「指す」必要があるオブジェクトを描画するプログラムを作成しています。そうするために、回転した画像を描きたいと思います。

オブジェクトを描画するための次のコードがあります。

glBindTexture(GL_TEXTURE_2D,img.getTextureID());
glBegin(GL_QUADS);
glTexCoord2f(0,0);
glVertex2f(x-r,y-r);
glTexCoord2f(1,0);
glVertex2f(x+r,y-r);
glTexCoord2f(1,1);
glVertex2f(x+r,y+r);
glTexCoord2f(0,1);
glVertex2f(x-r,y+r);
glEnd();

かなり基本的です。しかし、テクスチャを回転させたり、テクスチャを回転させて描画したりする方法を見つけるのに苦労していました。

4

2 に答える 2

3

@genpfaultの答えを詳しく説明するには:

テクスチャをその中心を中心に回転させたい場合は、その中心が (0,0) になるように描画する必要があります。次のようなことを試してください:

glPushMatrix();
glTranslatef(x,y); // move to the proper position
glRotatef( angle, 0, 0, 1 ); // now rotate

glBindTexture(GL_TEXTURE_2D,img.getTextureID());
glBegin(GL_QUADS);
glTexCoord2f(0,0);
glVertex2f(-r,-r);
glTexCoord2f(1,0);
glVertex2f(+r,-r);
glTexCoord2f(1,1);
glVertex2f(+r,+r);
glTexCoord2f(0,1);
glVertex2f(-r,+r);
glEnd();

glPopMatrix(); // pop off the rotation and transformation

glRotatefの角度はラジアンではなく度であることに注意してください。

于 2012-11-18T06:51:36.960 に答える
0

テクスチャの回転:

glMatrixMode( GL_TEXTURE );
glLoadIdentity();
glRotatef( angle, 0, 0, 1 );
glMatrixMode( GL_MODELVIEW );
drawTexturedQuad();

クワッドを回転させる:

glPushMatrix();
glRotatef( angle, 0, 0, 1 );
drawTexturedQuad();
glPopMatrix();
于 2012-11-16T03:27:54.300 に答える