#include #include #define MUNDO 4.0f void inicializar (void); void redimensiona (int alto, int ancho); void dibuja (void); void teclado (unsigned char key, int cx, int cy); void tecladoEspecial (int key, int cy, int cx); void animacion (void); void raton (int boton, int estado, int cx, int cy); int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize (640, 480); glutInitWindowPosition (100, 105); glutCreateWindow (argv[0]); inicializar(); glutDisplayFunc(dibuja); glutReshapeFunc(redimensiona); glutKeyboardFunc(teclado); glutSpecialFunc(tecladoEspecial); glutMouseFunc(raton); glutIdleFunc(animacion); glutMainLoop(); return 0; } void inicializar () { glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glEnable(GL_DEPTH_TEST); } void redimensiona (int ancho, int alto) { float aspect; glViewport (0, 0, ancho, alto); glMatrixMode (GL_PROJECTION); glLoadIdentity (); if (alto == 0){ alto = 1; } aspect = (float) ancho / (float) alto; if (ancho <= alto) { glOrtho(-MUNDO, MUNDO, -MUNDO/aspect, MUNDO/aspect, -MUNDO, MUNDO); } else { glOrtho(-MUNDO * aspect, MUNDO * aspect, -MUNDO, MUNDO, -MUNDO, MUNDO); } /* gluPerspective(45, aspect, -MUNDO, MUNDO); */ glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void teclado (unsigned char key, int cx, int cy) { switch (key) { case 27: exit(0); break; default: break; } glutPostRedisplay(); } void tecladoEspecial (int key, int cy, int cx) { switch (key) { case GLUT_KEY_UP: break; case GLUT_KEY_DOWN: break; case GLUT_KEY_LEFT: break; case GLUT_KEY_RIGHT: break; case GLUT_KEY_HOME: break; default: break; } glutPostRedisplay(); } void raton (int boton, int estado, int cx, int cy) { if (boton == GLUT_LEFT_BUTTON && estado == GLUT_DOWN) { } else if (boton == GLUT_RIGHT_BUTTON && estado == GLUT_UP) { } glutPostRedisplay(); } void animacion (void) { glutPostRedisplay(); } void dibuja (void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); /* dibuja aqui !! */ glutSwapBuffers(); }