/* CUBO GIRANDO CON TEXTURA DIFERENTE EN CADA CARA */ #include <stdio.h> #include <GL/glut.h> #include <unistd.h> #include "IMAGENES/Superman.c" #include "IMAGENES/Batman.c" #include "IMAGENES/Tigre.c" #include "IMAGENES/Hulk.c" #include "IMAGENES/Ironman.c" #include "IMAGENES/Maravilla.c" float Time; // (Time)Retardo float ANG = 0.0f; // (ANG)ulo de rotaciON void PintaEjes() { glBegin(GL_LINES); glColor3f(1,0,0); glVertex3f(-5, 0, 0); glVertex3f(5, 0, 0); // X glColor3f(0,1,0); glVertex3f(0, -5, 0); glVertex3f(0, 5, 0); // Y glColor3f(0,0,1); glVertex3f(0, 0, -5); glVertex3f(0, 0, 5); // Z glEnd(); glPushMatrix(); glColor3f(1,0,0); glTranslatef(5.0f, 0.0f, 0.0f); glutWireSphere(0.20, 20, 20); glPopMatrix(); glPushMatrix(); glColor3f(0,1,0); glTranslatef(0.0f, 5.0f, 0.0f); glutWireSphere(0.20, 20, 20); glPopMatrix(); glPushMatrix(); glColor3f(0,0,1); glTranslatef(0.0f, 0.0f, 5.0f); glutWireSphere(0.20, 20, 20); glPopMatrix(); } void Gradua ( ) { int k=0, x1,y1,x2,y2; glBegin(GL_LINES); glColor3f(1,0,0); for(k=1; k<10; k++) { glVertex3f(-5+k, 0.2, 0); glVertex3f(-5+k, -0.2, 0); } glColor3f(0,1,0); for(k=1; k<10; k++) { glVertex3f(0.2, -5+k, 0); glVertex3f(-0.2, -5+k, 0); } glColor3f(0,1,0); for(k=1; k<10; k++) { glVertex3f(0.2, 0, -5+k); glVertex3f(-0.2, 0, -5+k); } glEnd(); } Inicializa() { int texture; glClearColor(0.0,0.0,0.0,0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-8.0,8.0, -8.0,8.0, -7.0,7.0); Time = (float)80000; glMatrixMode(GL_MODELVIEW); gluLookAt(-1,-1,1, 2,2,-1, 0,0,1); //gluLookAt(1,1,-1, 0,0,-1, 0,1,0); glDepthFunc(GL_LEQUAL); glEnable(GL_DEPTH_TEST); glClearDepth(1.0); glGenTextures(1,&texture); // D-EVUELVE UN ID DE TEXTURA LIBRE- Se Crea una textura OpenGL glBindTexture(GL_TEXTURE_2D,texture); // -TEXTURA ACTIVA- Se "Ata" la nueva textura : Todas las futuras funciones de texturas van a modificar esta textura glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ); // CONDICIONES EN QUE SE VA A APLICAR -MODULATE- o -REPLACE- } void Tiempo(void) { // sleep( Time ); // SEGUNDOS usleep( Time ); // MICRO SEGUNDOS glutPostRedisplay(); } void Superman() { gluBuild2DMipmaps( GL_TEXTURE_2D, SUPERMAN.bytes_per_pixel, SUPERMAN.width, SUPERMAN.height,GL_RGB, GL_UNSIGNED_BYTE, SUPERMAN.pixel_data ); glEnable(GL_TEXTURE_2D); glBegin(GL_QUADS); glColor3f(1.0,1.0,1.0); glTexCoord2d(0.0, 1.0); glVertex3f(-1.0f, -1.0f, -1.0f); glTexCoord2d(1.0, 1.0); glVertex3f(1.0f, -1.0f, -1.0f); glTexCoord2d(1.0, 0.0); glVertex3f(1.0f, -1.0f, 1.0f); glTexCoord2d(0.0, 0.0); glVertex3f(-1.0f, -1.0f, 1.0f); glEnd(); glDisable(GL_TEXTURE_2D); } void Batman() { gluBuild2DMipmaps( GL_TEXTURE_2D, BATMAN.bytes_per_pixel, BATMAN.width, BATMAN.height,GL_RGB, GL_UNSIGNED_BYTE, BATMAN.pixel_data ); glEnable(GL_TEXTURE_2D); glBegin(GL_QUADS); glColor3f(1.0,1.0,1.0); glTexCoord2d(0.0, 1.0); glVertex3f(-1.0f, 1.0f, -1.0f); glTexCoord2d(1.0, 1.0); glVertex3f(1.0f, 1.0f, -1.0f); glTexCoord2d(1.0, 0.0); glVertex3f(1.0f, 1.0f, 1.0f); glTexCoord2d(0.0, 0.0); glVertex3f(-1.0f, 1.0f, 1.0f); glEnd(); glDisable(GL_TEXTURE_2D); } void Tigre() { gluBuild2DMipmaps( GL_TEXTURE_2D, TIGRE.bytes_per_pixel, TIGRE.width, TIGRE.height,GL_RGB, GL_UNSIGNED_BYTE, TIGRE.pixel_data ); glEnable(GL_TEXTURE_2D); glBegin(GL_QUADS); glColor3f(1.0,1.0,1.0); glTexCoord2d(0.0, 1.0); glVertex3f(1.0f, -1.0f, -1.0f); glTexCoord2d(1.0, 1.0); glVertex3f(1.0f, 1.0f, -1.0f); glTexCoord2d(1.0, 0.0); glVertex3f(1.0f, 1.0f, 1.0f); glTexCoord2d(0.0, 0.0); glVertex3f(1.0f, -1.0f, 1.0f); glEnd(); glDisable(GL_TEXTURE_2D); } void Hulk() { gluBuild2DMipmaps( GL_TEXTURE_2D, HULK.bytes_per_pixel, HULK.width, HULK.height,GL_RGB, GL_UNSIGNED_BYTE, HULK.pixel_data ); glEnable(GL_TEXTURE_2D); glBegin(GL_QUADS); glColor3f(1.0,1.0,1.0); glTexCoord2d(0.0, 1.0); glVertex3f(-1.0f, -1.0f, -1.0f); glTexCoord2d(1.0, 1.0); glVertex3f(1.0f, -1.0f, -1.0f); glTexCoord2d(1.0, 0.0); glVertex3f(1.0f, 1.0f, -1.0f); glTexCoord2d(0.0, 0.0); glVertex3f(-1.0f, 1.0f, -1.0f); glEnd(); glDisable(GL_TEXTURE_2D); } void Maravilla() { gluBuild2DMipmaps( GL_TEXTURE_2D, MARAVILLA.bytes_per_pixel, MARAVILLA.width, MARAVILLA.height,GL_RGB, GL_UNSIGNED_BYTE, MARAVILLA.pixel_data ); glEnable(GL_TEXTURE_2D); glBegin(GL_QUADS); glColor3f(1.0,1.0,1.0); glTexCoord2d(0.0, 1.0); glVertex3f(-1.0f, -1.0f, 1.0f); glTexCoord2d(1.0, 1.0); glVertex3f(1.0f, -1.0f, 1.0f); glTexCoord2d(1.0, 0.0); glVertex3f(1.0f, 1.0f, 1.0f); glTexCoord2d(0.0, 0.0); glVertex3f(-1.0f, 1.0f, 1.0f); glEnd(); glDisable(GL_TEXTURE_2D); } void Ironman() { gluBuild2DMipmaps( GL_TEXTURE_2D, IRONMAN.bytes_per_pixel, IRONMAN.width, IRONMAN.height,GL_RGB, GL_UNSIGNED_BYTE, IRONMAN.pixel_data ); glEnable(GL_TEXTURE_2D); glBegin(GL_QUADS); glColor3f(1.0,1.0,1.0); glTexCoord2d(0.0, 1.0); glVertex3f(-1.0f, 1.0f, -1.0f); glTexCoord2d(1.0, 1.0); glVertex3f(-1.0f, -1.0f, -1.0f); glTexCoord2d(1.0, 0.0); glVertex3f(-1.0f, -1.0f, 1.0f); glTexCoord2d(0.0, 0.0); glVertex3f(-1.0f, 1.0f, 1.0f); glEnd(); glDisable(GL_TEXTURE_2D); } /* 00 10 01 11 */ void Dibuja(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); PintaEjes( ); Gradua( ); glPushMatrix(); ANG = ( ANG == 360 ) ? 0 : ANG+10; glRotatef(ANG, 0.0f, 0.0f, 1.0f); glRotatef(60, 1.0f, 0.0f, 1.0f); glTranslatef(1, 1, 1); Superman(); Tigre(); Batman(); Hulk(); Maravilla(); Ironman(); glPopMatrix(); glFlush(); //glutSwapBuffers(); } int main(int argc, char ** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowPosition(700,100); glutInitWindowSize(650,650); glutCreateWindow("USO DE TEXTURAS ... "); Inicializa(); glutDisplayFunc(Dibuja); glutIdleFunc(Tiempo); glutMainLoop(); }