我有一个我想旋转的立方体。我也有一个光源GL_LIGHT0。我想旋转立方体并将光源固定在其位置上。但光源与我的立方体一起旋转。我使用OpenGL ES 1.1 下面是我的代码片段,使我的问题更清晰。如何旋转物体并保持固定? (OpenGL)
GLfloat glfarr[] = {...} //cube points
GLubyte glubFaces[] = {...}
Vertex3D normals[] = {...} //normals to surfaces
const GLfloat light0Position[] = {0.0, 0.0, 3.0, 0.0};
glLightfv(GL_LIGHT0, GL_POSITION, light0Position);
glEnable(GL_LIGHT0);
for(i = 0; i < 8000; ++i)
{
if (g_bDemoDone) break;
glLoadIdentity();
glTranslatef(0.0,0.0, -12);
glRotatef(rot, 0.0, 1.0,1.0);
rot += 0.8;
glClearColor(0, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glNormalPointer(GL_FLOAT, 0, normals);
glVertexPointer(3, GL_FLOAT, 0, glfarr);
glDrawElements(GL_TRIANGLES, 3*12, GL_UNSIGNED_BYTE, glubFaces);
glDisableClientState(GL_NORMAL_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
eglSwapBuffers(eglDisplay, eglSurface);
}
谢谢。
谢谢。但是:我们不能使用GLUT,因为我们使用的是OpenGL ES(嵌入式)。没有另一种简单的方法来旋转立方体(不是视图矩阵)吗? – snakile 2010-08-18 18:51:29
1.直接旋转顶点是一个不好的建议。 2. OpenGL没有**视图**矩阵。它有** modelview **矩阵。这是世界*的观点。 – SigTerm 2010-08-18 18:52:40
@SigTerm好吧,那么如何旋转立方体而不直接旋转顶点? – snakile 2010-08-18 18:56:03