|
|
我是一个opengl的初学者,看到了nehe教程的第九课,其中有这样一段代码
for (loop=0; loop<num; loop++) // Loop Through All The Stars
{
glLoadIdentity(); // Reset The View Before We Draw Each Star
glTranslatef(0.0f,0.0f,zoom); // Zoom Into The Screen (Using The Value In 'zoom')
glRotatef(tilt,1.0f,0.0f,0.0f); // Tilt The View (Using The Value In 'tilt')
glRotatef(star[loop].angle,0.0f,1.0f,0.0f); // Rotate To The Current Stars Angle
glTranslatef(star[loop].dist,0.0f,0.0f); // Move Forward On The X Plane
glRotatef(-star[loop].angle,0.0f,1.0f,0.0f); // Cancel The Current Stars Angle
glRotatef(-tilt,1.0f,0.0f,0.0f); // Cancel The Screen Tilt
if (twinkle)
。。。。。。。。
glRotatef(tilt,1.0f,0.0f,0.0f);glRotatef(star[loop].angle,0.0f,1.0f,0.0f);这两句话意思是场景先绕x轴旋转90度,然后在y轴上旋转星星的角度,然后是把星星绕y轴来旋转。那为什么不能
直接绕z轴旋转呢。。。我试验了一下
for (loop=0; loop<num; loop++) // Loop Through All The Stars
{
glLoadIdentity(); // Reset The View Before We Draw Each Star
glTranslatef(0.0f,0.0f,zoom); // Zoom Into The Screen (Using The Value In 'zoom')
glRotatef(star[loop].angle,0.0f,0.0f,1.0f); // Rotate To The Current Stars Angle
glTranslatef(star[loop].dist,0.0f,0.0f); // Move Forward On The X Plane
if (twinkle)
.............
这样的话,执行程序的情况和上面代码是一样的,但是教程上面为什么采用了第一种方法呢??是不是有什么玄机呢?请各位大虾帮忙解惑.......谢谢了
|
|