glPushMatrix();
{
glRotatef(spin, 0.0, 1.0, 0.0); glutSolidTeapot(1.0);
}
glPopMatrix();
}
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glFlush();
//---------------------------------------------------------------------------------------------
//Right Viewport
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glGetFloatv(GL_PROJECTION_MATRIX, matrix);
glLoadIdentity();
glMultMatrixf(RightProjectMatrix);
glMultMatrixf(matrix);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
{
glGetFloatv(GL_MODELVIEW_MATRIX, matrix);
glLoadIdentity();
glMultMatrixf(RightModelViewMatrix);
glMultMatrixf(matrix);
glColorMask(0.0, 1.0, 1.0, 1.0);
glClearDepth(1.0);
glClear(GL_DEPTH_BUFFER_BIT);
/**//*
* 物体的坐标Vp
* 变换到屏幕坐标:Vp'= RightProjectMatrix×Mp× RightModelViewMatrix×Mv × Mr×Vp
*/
glPushMatrix();
{
glRotatef(spin, 0.0, 1.0, 0.0);
glutSolidTeapot(1.0);
//glutSolidSphere(1.0, 20, 5);
}
}
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glFlush ();
glutSwapBuffers();
}
void reshape (int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity();
//投影矩阵:Mp
gluPerspective(fovy, (GLfloat)w/(GLfloat)h, 1.0, 20.0);
}
void spinDisplay(void)
{
spin = spin + 1.0;
if (spin > 360.0)
spin = spin - 360.0;
glutPostRedisplay();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize (500, 500);
glutInitWindowPosition (100, 100);
glutCreateWindow (argv[0]);
init ();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutIdleFunc(spinDisplay);
glutMainLoop();
return 0;
}
相关阅读: