lunes, 5 de septiembre de 2016

Tarea 6 - Texturas - David Gómez Jaramllo

David Gómez Jaramillo

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;
}

Descargas:

Descargar codigoDescargar imagen RAW


No hay comentarios:

Publicar un comentario