lunes, 5 de septiembre de 2016


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