martes, 6 de septiembre de 2016


#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("/Users/Juan/Desktop/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");}
    
    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, 0, 1, 0);
    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