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