#include #include #include GLuint texture; int ancho = 128; // imagen en disco int alto = 128; // imagen en disco unsigned char * data; int LeeImagen() { FILE * file; file = fopen( "batlogo.raw", "rb" ); if ( file == NULL ) return 0; data = (unsigned char *)malloc(ancho*alto*3); fread( data, ancho * alto * 3, 1, file ); fclose( file ); } void CargaTextura() { glGenTextures(1, &texture); glBindTexture(GL_TEXTURE_2D,texture); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, ancho, alto, 0, GL_RGB, GL_UNSIGNED_BYTE, data); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR); } void dibuja(void) { glClear(GL_COLOR_BUFFER_BIT); glEnable(GL_TEXTURE_2D); LeeImagen(); CargaTextura(); glBindTexture(GL_TEXTURE_2D,texture); glBegin(GL_TRIANGLES); glTexCoord2f(0.0,1.0); glVertex2f(-2.0,-2.0); glTexCoord2f(1.0,1.0); glVertex2f(2.0,-2.0); glTexCoord2f(0.5,0.0); glVertex2f(0.0,2.0); glEnd(); glFlush(); } void reshape(int width,int height) { glClearColor(0.7,0.7,0.7,0.0); glViewport(0,0,width,height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-2.5,2.5,-2.5,2.5); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void keyboard(unsigned char key,int x,int y) { if (key==27){ glDeleteTextures(1,&texture); exit(0); } } int main(int argc,char **argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE); glutInitWindowSize(256,256); glutCreateWindow("textura sintética raw"); glutDisplayFunc(dibuja); glutReshapeFunc(reshape); glutKeyboardFunc(keyboard); glutMainLoop(); return 0; }