2012-11-16 47 views
2

我正在創建一個程序,它繪製一個對象,它需要「指向」鼠標。爲此,我想繪製旋轉的圖像。lwjgl和光滑的 - 旋轉光滑的紋理

我對繪畫對象的代碼:

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(); 

非常基本的。但我很難找到如何旋轉紋理,或繪製旋轉的紋理。

回答

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的角度爲度,不弧度。

0

旋轉紋理:

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

旋轉四:

glPushMatrix(); 
glRotatef(angle, 0, 0, 1); 
drawTexturedQuad(); 
glPopMatrix();