Capturas de Pantalla
Código
DESCARGAR
Mostrando entradas con la etiqueta ricardo. Mostrar todas las entradas
Mostrando entradas con la etiqueta ricardo. Mostrar todas las entradas
miércoles, 19 de octubre de 2016
lunes, 5 de septiembre de 2016
Texturas ejercicio
Por:Ricardo Daniel Gonzalez Gomez
Captura de pantalla
Código
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <GL/glut.h>
#define PI 3.141592653
int ancho=128,alto=128, lados = 3;
float angX = 0, ang = 0;
unsigned char * datos;
int leerImagen(){
FILE *imagen;
imagen=fopen("/home/ricardo/Documentos/UAEMex/Graficacion/cla07/boy.raw","r");
datos = (unsigned char*)malloc(ancho*alto*3);
if(imagen==NULL){
printf("Error: No imagen");
return 0;
}else{printf("OK: Imagen cargada correctamente\n");}
fread(datos,ancho*alto*3,1,imagen);
fclose(imagen);
return 1;
}
void teclado(unsigned char tecla, int x, int y)
{
switch(tecla){
case(27):
exit(0);
case('1')://girar izq
ang -= 5;
break;
case('2')://girar der
ang += 5;
break;
case('3')://menos lados
if(lados > 3){
lados -= 1;
}
break;
case('4')://mas lados
lados += 1;
break;
case('5')://rotar en X posi
angX -= 5;
break;
case('6')://rotar en X posi
angX += 5;
break;
default:
glutPostRedisplay(); break;
}
glutPostRedisplay();
}
void display(void){
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glRotatef(ang, 0, 0, 1);
glRotatef(angX, 1, 0, 0);
glBegin(GL_TRIANGLE_FAN);
float teta, x, y;
for (int i = 0; i < lados; ++i){
teta = (i * PI * 2) / lados;
x = 2 * cos(teta) ;
y = 2 * sin(teta) ;
glTexCoord2f(x, y);glVertex2f(x, y);
}
//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();
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 código
Descargar imagen
Captura de pantalla
Código
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <GL/glut.h>
#define PI 3.141592653
int ancho=128,alto=128, lados = 3;
float angX = 0, ang = 0;
unsigned char * datos;
int leerImagen(){
FILE *imagen;
imagen=fopen("/home/ricardo/Documentos/UAEMex/Graficacion/cla07/boy.raw","r");
datos = (unsigned char*)malloc(ancho*alto*3);
if(imagen==NULL){
printf("Error: No imagen");
return 0;
}else{printf("OK: Imagen cargada correctamente\n");}
fread(datos,ancho*alto*3,1,imagen);
fclose(imagen);
return 1;
}
void teclado(unsigned char tecla, int x, int y)
{
switch(tecla){
case(27):
exit(0);
case('1')://girar izq
ang -= 5;
break;
case('2')://girar der
ang += 5;
break;
case('3')://menos lados
if(lados > 3){
lados -= 1;
}
break;
case('4')://mas lados
lados += 1;
break;
case('5')://rotar en X posi
angX -= 5;
break;
case('6')://rotar en X posi
angX += 5;
break;
default:
glutPostRedisplay(); break;
}
glutPostRedisplay();
}
void display(void){
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glRotatef(ang, 0, 0, 1);
glRotatef(angX, 1, 0, 0);
glBegin(GL_TRIANGLE_FAN);
float teta, x, y;
for (int i = 0; i < lados; ++i){
teta = (i * PI * 2) / lados;
x = 2 * cos(teta) ;
y = 2 * sin(teta) ;
glTexCoord2f(x, y);glVertex2f(x, y);
}
//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();
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 código
Descargar imagen
Suscribirse a:
Entradas (Atom)