Textura Sintética
Garnica Ayala Héctor Daniel/** Garnica Ayala Héctor Daniel Tectura Sintética Programa: muestra el uso de una textura sintética sobre una imagen .raw controles: 1 rota hacia la izquierda 2 rota hacia la derecha 3 aumenta el numero de lados 4 reduce el numero de lados 5 rota sobre el eje x positivo 6 rota sobre el eje x negativo **/ #include "windows.h" #include "stdio.h" #include "stdlib.h" #include "GL/GLUT.h" #include "math.h" int ancho=720,alto=780,ang=0,angz=0,lados=3; unsigned char * datos; /************LEER LA IMAGEN********/ int leerImagen() { FILE *imagen; imagen=fopen("C:/Users/host/Documents/PROG_Graficacion/TexturaSintetica/m.raw","r"); datos=(unsigned char*)malloc(ancho*alto*3); if(imagen==NULL) { printf("Error: No imagen"); return 0; } else { printf("OK: Imagen cargada correctamente"); } fread(datos,ancho*alto*3,1,imagen); fclose(imagen); return 1; } /*****OPCIONES DE TECLADO***/ void teclado(unsigned char tecla, int x, int y) { switch(tecla) { case(27): exit(0); case('1'):// girar hacia la izquierda ang=ang+3; break; case('2')://girar hacia la derecha ang=ang-3; break; case ('3')://aumenta el numero de lados lados=lados+1; break; case ('4')://reduce elnumero de lados lados=lados-1; break; case ('5')://rota en x + angz=angz+1; break; case ('6')://rota en x - angz=angz-1; break; default: glutPostRedisplay(); break; } glutPostRedisplay(); } void display(void) { glClear(GL_COLOR_BUFFER_BIT); glPushMatrix(); glRotatef(ang, 0, 0, 1); glRotatef(angz,1,0,0);//inclina la figura glBegin(GL_TRIANGLE_FAN); float ang,x,y; for(int i=0;i<=lados;i++){ ang=i*2*3.141592653/lados; x=cos(ang)+1.5; y=sin(ang)+1.5; glTexCoord2f(x, y); glVertex2f(x, y); } glEnd(); glPopMatrix(); glFlush(); } void usarTexturas() { leerImagen(); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, ancho, alto, 0, GL_RGB, GL_UNSIGNED_BYTE, datos); glEnable(GL_TEXTURE_2D); } void Init() { glClearColor(0.0,0.0,0.0,0); gluOrtho2D(-2.5,2.5,-2.5,2.5); glMatrixMode(GL_PROJECTION); glLoadIdentity(); usarTexturas(); } int main(int argc, char **argv) { glutInit(&argc, argv); glutInitWindowSize(600,600); glutInitWindowPosition(10,10); glutCreateWindow ("Textura Sintética"); Init(); glutDisplayFunc(display); glutKeyboardFunc(teclado); glutMainLoop(); return 0; }Descargar Archivo.txt
TexturaSintetica.txt
No hay comentarios:
Publicar un comentario