0001:
0002:
0003:
0004:
0005:
0006:
0007:
0008:
0009:
0010: #include <GL/glut.h>
0011:
0012:
0013:
0014:
0015: static float r = 0.0f;
0016:
0017:
0018:
0019:
0020: void display(void)
0021: {
0022:
0023: glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
0024:
0025:
0026: glMatrixMode(GL_MODELVIEW);
0027: glLoadIdentity();
0028: gluLookAt( 0.0, 0.0, 3.0,
0029: 0.0, 0.0, 0.0,
0030: 0.0, 1.0, 0.0);
0031:
0032:
0033:
0034:
0035: glPushMatrix();
0036:
0037: glRotated(r, 0.0, 1.0, 0.0);
0038:
0039: glBegin(GL_TRIANGLE_STRIP);
0040: glColor3d(1.0, 0.0, 0.0);
0041: glVertex3d(-0.9, +0.9, 0.0);
0042: glColor3d(0.0, 1.0, 0.0);
0043: glVertex3d(+0.9, +0.9, 0.0);
0044: glColor3d(0.0, 0.0, 1.0);
0045: glVertex3d(-0.9, -0.9, 0.0);
0046: glColor3d(1.0, 1.0, 1.0);
0047: glVertex3d(+0.9, -0.9, 0.0);
0048: glEnd();
0049: glPopMatrix();
0050:
0051: glutSwapBuffers();
0052: }
0053:
0054:
0055:
0056: void resize(int w, int h)
0057: {
0058:
0059: glViewport(0, 0, w, h);
0060:
0061:
0062: glMatrixMode(GL_PROJECTION);
0063: glLoadIdentity();
0064: gluPerspective( 60.0,
0065: 1.0,
0066: 1.0, 100.0);
0067: }
0068:
0069:
0070:
0071: void idle()
0072: {
0073:
0074: r = r + 3.0f;
0075: while (360.0f < r) r -= 360.0f;
0076:
0077: glutPostRedisplay();
0078: }
0079:
0080:
0081:
0082: int main(int argc, char *argv[])
0083: {
0084:
0085: glutInitWindowPosition(100, 100);
0086: glutInitWindowSize(512, 512);
0087: glutInit(&argc, argv);
0088: glutInitDisplayMode(GLUT_DOUBLE
0089: | GLUT_RGBA
0090: | GLUT_DEPTH);
0091: glutCreateWindow(argv[0]);
0092:
0093:
0094: glutDisplayFunc(display);
0095: glutReshapeFunc(resize);
0096: glutIdleFunc(idle);
0097:
0098:
0099: glClearColor(0.0, 0.0, 0.3, 0.0);
0100: glEnable(GL_DEPTH_TEST);
0101:
0102: glutMainLoop();
0103:
0104: return 0;
0105: }