我正在制作2D游戏。我希望能够在围绕中心点旋转一定量后在屏幕上渲染纹理。基本上这是为了围绕玩家进行关卡旋转。玩家位置是旋转点,玩家的方向是角度。此代码不会工作:在OpenGL中围绕中心点旋转四角形
def draw_texture(texture,offset,size,a,rounded,rotation,point):
glMatrixMode(GL_MODELVIEW)
glLoadIdentity() #Loads model matrix
glColor4f(1,1,1,float(a)/255.0)
glTranslatef(point[0],point[1],0)
glRotatef(rotation,0,0,1)
glBindTexture(GL_TEXTURE_2D, texture)
if rounded == 0:
glBegin(GL_QUADS)
glTexCoord2f(0.0, 0.0)
glVertex2i(*offset) #Top Left
glTexCoord2f(0.0, 1.0)
glVertex2i(offset[0],offset[1] + size[1]) #Bottom Left
glTexCoord2f(1.0, 1.0)
glVertex2i(offset[0] + size[0],offset[1] + size[1]) #Bottom, Right
glTexCoord2f(1.0, 0.0)
glVertex2i(offset[0] + size[0],offset[1]) #Top, Right
glEnd()
else:
#Nothing important here
glEnd()
任何让它工作的方法吗?谢谢。
它似乎不允许我将纹理移动到正确的位置。当我尝试移动播放器时,它会卡住。奇。 谢谢你的回复。 我可能会使用三角函数来做到这一点。我只会更喜欢更简单的方法。 – 2010-01-19 00:18:27
调试的一种方法:以0旋转在原点处启动所有内容,然后逐渐重新添加翻译和旋转,并确保它们在您期望的位置。 – cobbal 2010-01-19 01:24:58