1
我的问题是我需要围绕最左端的中心旋转一个白色正方形,无论我尝试什么,我似乎都无法做到。OpenGl围绕点转动
我需要围绕radius
旋转一个对象,这是距离我已经翻译到的位置(getPosition().x/y
)远的radius
。我需要旋转r度。如果重要,我使用正射影像(glOrtho
)投影。
到目前为止,这是我的尝试:
//Try 1
glRotatef(r, 0, 0, 1.0f);
glTranslatef(radius, radius, 0);
glBegin(GL_QUADS)
//draw here...
//Try 2
glTranslatef(-radius, -radius, 0);
glRotatef(r, 0, 0, 1.0f);
glTranslatef(radius, radius, 0);
glBegin(GL_QUADS)
//draw here...
//Try 3
glTranslatef(radius + getPosition().x, radius + getPosition().y, 0);
glRotatef(r, 0, 0, 1.0f);
glTranslatef(radius, radius, 0);
glBegin(GL_QUADS)
//draw here...
我曾尝试谷歌搜索和StackOverflow上搜索无数次,没有运气。其中两个“解决方案”来自StackOverflow本身的答案。
所有这些尝试围绕原点旋转。我也尝试了许多其他更无意义的组合,无济于事。如果它很重要,那么在此代码之前,我翻译矩阵(并且不要将它弹出)。我认为这不是问题,因为在这些尝试不能解决问题之前,弹出矩阵并重新推回新矩阵。
任何帮助将不胜感激。
'glTranslatef'有三个参数,而不是两个。不知道这是否是错字。 – 2014-11-02 02:51:45
@ColonelThirtyTwo是的,这是一个错字现在将修复 – 2014-11-02 02:58:32
@ColonelThirtyTwo所以我已经尝试了其他一些东西,包括隔离一些opengl代码并尝试各种翻译,但不管我做什么,对象都不会围绕某个点旋转。事实上,它甚至不会绕着__任何点旋转,只会围绕原点旋转。 – 2014-11-02 03:06:55