Capturas de Pantalla:
Imagen RAW usada:
Código:
#include <stdio.h>#include <math.h>
#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <windows.h>
#include <GL/glut.h>
#endif
#include <stdlib.h>
//Medidas de la imagen!!!!!!!!!!!!!
int ancho=128,alto=128, ang, angx, lados=3;
unsigned char * datos;
int leerImagen(){
FILE *imagen;
imagen=fopen("C:/ImagenesC/dino.raw","r");
datos=(unsigned char*)malloc(ancho*alto*3);//asigna espacio de memoria para guardar imagen
if(imagen==NULL){
printf("Error: No imagen");
return 0;
}else{printf("OK: Imagen cargada correctamente");}
//asignamos el archivo de la imagen para la memoria guardada
fread(datos,ancho*alto*3,1,imagen);
fclose(imagen);
return 1;
}
void teclado(unsigned char tecla, int x, int y)
{
glClear(GL_COLOR_BUFFER_BIT);
switch(tecla){
case(27):
exit(0);
case('1'):
ang+=3;break;
case('2'):
ang+=-3;break;
case('3'):
lados++;break;
case('4'):
if(lados>3){lados--;}
break;
case('5'):
angx+=3;
break;
case('6'):
angx+=-3;
break;
default:
glutPostRedisplay();
break;
}
glutPostRedisplay();
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glRotatef(ang, 0, 0, 1);
glRotatef(angx, 1, 0, 1);
glBegin(GL_TRIANGLE_FAN);
float ang, x, y;
for(int i=0; i<=lados; i++){
ang =i*2*3.141592653/lados;
y=cos(ang)+1.5;
x=sin(ang)+1.5;
glTexCoord2d(x,y);glVertex2f(x,y);
}
/*
glTexCoord2f(0.0, 1.7);glVertex2f(-2.0, -2.0);
glTexCoord2f(1.7, 1.7);glVertex2f(2.0, -2.0);
glTexCoord2f(1.2, 0.0);glVertex2f(0.0, 2.0);*/
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(0,2.5,0,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;
}
No hay comentarios:
Publicar un comentario