OpenGL glRotatef

pea*_*man 5 opengl glrotate

有什么区别

glRotatef(angle, 1.0f, 0.0f, 0.0f);
glRotatef(angle, 0.0f, 0.0f, 1.0f);
Run Code Online (Sandbox Code Playgroud)

glRotatef(angle, 1.0f, 0.0f, 1.0f);
Run Code Online (Sandbox Code Playgroud)

当我将第二个参数1.0f更改为5.0f时为什么没有变化?最后,如何围绕x = 5而不是x = 0左右旋转对象?

Jes*_*mos 6

如果要绕x=5你应该做一个glTranslatex=5无论你的y坐标,然后做glRotateglTranslate回到原点.

所以像

glTranslate(5, 0, 0);
glRotatef(...);
glTranslate(-5, 0, 0);
Run Code Online (Sandbox Code Playgroud)

对于第一个问题,我包括@ genpfault的完整性答案.这是由于glRotatef()您传入的矢量完成矢量归一化.