OpenGLで中心点の周りを回転クワッド
質問
私は、2Dのゲームを作ってるんです。私は、中心点の周りにそれを一定量回転させた後、画面上のテクスチャをレンダリングできるようにしたいです。基本的にこれはプレイヤーの周りのレベルの回転のためです。プレイヤ位置である回転点と角度としてプレイヤの方向。このコード文句を言わない仕事ます:
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()
それは働い取得する方法?ありがとうございます。
解決
タグを逆にしてみてください
glTranslatef(point[0],point[1],0)
と
glRotatef(rotation,0,0,1)
あなたはプレイヤーに変換するが、その後の原点(ないプレイヤー)
の周りを回転しています赤い本でからイラスト:<のhref = "HTTPS: //i.stack.imgur.com/WMzPq.gif」のrel = "nofollowをnoreferrer">
他のヒント
あなたがそうでなければ行うには良い理由がない限り、私は一人で描画コードを残して、ちょうどカメラアングルを変更すると思います。おそらくそれを行う最も簡単な方法は、使用gluLookAtです。あなたのケースでは、あなたは明らかにプレイヤーの位置を見て、ちょうど最後の二つのパラメータで指定された「上方向」を、変更します。
所属していません StackOverflow