| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 | 
							- /* $Id: glutskel.c,v 1.1 1999/08/19 00:55:42 jtg Exp $ */
 - 
 - /*
 -  * A skeleton/template GLUT program
 -  *
 -  * Written by Brian Paul and in the public domain.
 -  */
 - 
 - 
 - /*
 -  * $Log: glutskel.c,v $
 -  * Revision 1.1  1999/08/19 00:55:42  jtg
 -  * Initial revision
 -  *
 -  * Revision 1.2  1998/11/07 14:20:14  brianp
 -  * added simple rotation, animation of cube
 -  *
 -  * Revision 1.1  1998/11/07 14:14:37  brianp
 -  * Initial revision
 -  *
 -  */
 - 
 - 
 - #include <stdio.h>
 - #include <stdlib.h>
 - #include <math.h>
 - #include <GL/glut.h>
 - 
 - 
 - static GLfloat Xrot = 0, Yrot = 0, Zrot = 0;
 - static GLboolean Anim = GL_FALSE;
 - 
 - 
 - static void Idle( void )
 - {
 -    Xrot += 3.0;
 -    Yrot += 4.0;
 -    Zrot += 2.0;
 -    glutPostRedisplay();
 - }
 - 
 - 
 - static void Display( void )
 - {
 -    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
 - 
 -    glPushMatrix();
 -    glRotatef(Xrot, 1, 0, 0);
 -    glRotatef(Yrot, 0, 1, 0);
 -    glRotatef(Zrot, 0, 0, 1);
 - 
 -    glutSolidCube(2.0);
 - 
 -    glPopMatrix();
 - 
 -    glutSwapBuffers();
 - }
 - 
 - 
 - static void Reshape( int width, int height )
 - {
 -    glViewport( 0, 0, width, height );
 -    glMatrixMode( GL_PROJECTION );
 -    glLoadIdentity();
 -    glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 );
 -    glMatrixMode( GL_MODELVIEW );
 -    glLoadIdentity();
 -    glTranslatef( 0.0, 0.0, -15.0 );
 - }
 - 
 - 
 - static void Key( unsigned char key, int x, int y )
 - {
 -    const GLfloat step = 3.0;
 -    (void) x;
 -    (void) y;
 -    switch (key) {
 -       case 'a':
 -          Anim = !Anim;
 -          if (Anim)
 -             glutIdleFunc(Idle);
 -          else
 -             glutIdleFunc(NULL);
 -          break;
 -       case 'z':
 -          Zrot -= step;
 -          break;
 -       case 'Z':
 -          Zrot += step;
 -          break;
 -       case 27:
 -          exit(0);
 -          break;
 -    }
 -    glutPostRedisplay();
 - }
 - 
 - 
 - static void SpecialKey( int key, int x, int y )
 - {
 -    const GLfloat step = 3.0;
 -    (void) x;
 -    (void) y;
 -    switch (key) {
 -       case GLUT_KEY_UP:
 -          Xrot -= step;
 -          break;
 -       case GLUT_KEY_DOWN:
 -          Xrot += step;
 -          break;
 -       case GLUT_KEY_LEFT:
 -          Yrot -= step;
 -          break;
 -       case GLUT_KEY_RIGHT:
 -          Yrot += step;
 -          break;
 -    }
 -    glutPostRedisplay();
 - }
 - 
 - 
 - static void Init( void )
 - {
 -    /* setup lighting, etc */
 -    glEnable(GL_DEPTH_TEST);
 -    glEnable(GL_LIGHTING);
 -    glEnable(GL_LIGHT0);
 - }
 - 
 - 
 - int main( int argc, char *argv[] )
 - {
 -    glutInit( &argc, argv );
 -    glutInitWindowPosition( 0, 0 );
 -    glutInitWindowSize( 400, 400 );
 -    glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH );
 -    glutCreateWindow(argv[0]);
 -    glutReshapeFunc( Reshape );
 -    glutKeyboardFunc( Key );
 -    glutSpecialFunc( SpecialKey );
 -    glutDisplayFunc( Display );
 -    Init();
 -    glutMainLoop();
 -    return 0;
 - }
 
 
  |