miércoles, 31 de octubre de 2012

Luces en polígonos no predefinidos.





#include "stdafx.h"
#include<GL\glut.h>
#include<math.h>

void Inicializacion(void);
void Dibuja(void);


int _tmain(int argc, _TCHAR* argv[])
{
glutInitDisplayMode(GLUT_RGB|GLUT_DEPTH|GLUT_DOUBLE);
glutInitWindowSize(600,600);
glutInitWindowPosition(200,200);
glutCreateWindow("Cubo en OpenGL");
Inicializacion();
glutDisplayFunc(Dibuja);
glutMainLoop();

return 0;
}



void Inicializacion(void){
glMatrixMode(GL_PROJECTION); //coordenadas objeto en 3D
glLoadIdentity(); //Matriz identidad
gluPerspective(70,1,0.1,100);
glMatrixMode(GL_MODELVIEW);
/*glTranslated(0,0,-10);
glRotated(-253,0,1,0);
*/glClearColor(1,1,1,0);
glShadeModel(GL_SMOOTH);
glEnable(GL_CULL_FACE); //
glCullFace(GL_BACK); //glCullFace determina qué polígonos deben de descartarse, en este caso los traceros.
glFrontFace(GL_CW); //EL polígono está en el sentido de las manesillas del reloj

}

void Dibuja(void){

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glLoadIdentity();
GLfloat ambientlight[4]  =    {0.5f ,0.5f ,0.5f ,1.0f};
float glfLightPosition[4] = {0.0, 2, 7.0, 1.0};
float glfLightDiffuse[4] = {0.7, 0.7, 0.7, 1.0};
float glfLightSpecular[4] = {0.7, 0.7, 0.7, 1.0};

//glLightfv(GL_LIGHT0,GL_AMBIENT,ambientlight);
glLightfv(GL_LIGHT0, GL_POSITION, glfLightPosition); // Se definen las
glLightfv(GL_LIGHT0, GL_DIFFUSE, glfLightDiffuse); //carácterísticas de la
glLightfv(GL_LIGHT0, GL_SPECULAR, glfLightSpecular);// luces
 glEnable(GL_LIGHT0);
 glEnable(GL_LIGHTING);

//--------------------------------------------------
 


glPushMatrix();
float ambiental[4]={1,0,0,1};
 float especular[4]={0.5,0,0.5,1};
 
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ambiental);
glMaterialfv(GL_FRONT, GL_SPECULAR, especular);
glMaterialf(GL_FRONT, GL_SHININESS, 30);

glTranslated(0,0,-10);
glRotated(45,10,10,0);


glBegin(GL_QUADS);
//cara 1

glColor3f(0,0,1);
glNormal3d(-8,0,-8);
glVertex3d(-2,-2,2);
//glNormal3d(0,8,-8); 
glVertex3d(-2,2,2);
//glNormal3d(8,0,-8);
glVertex3d(2,2,2);
//glNormal3d(0,-8,-8);
glVertex3d(2,-2,2);

//cara2
glColor3f(1,0,1);
glNormal3d(0,0,8);
glVertex3d(2,2,-2);
glNormal3d(-8,0,0);
glVertex3d(-2,2,-2);
glVertex3d(-2,-2,-2);
glVertex3d(2,-2,-2);

//cara3
glColor3f(1,0,0);
glNormal3d(8,-8,8);
glVertex3d(-2,2,2);
//glNormal3d(8,-8,0);
glVertex3d(-2,-2,2);
//glNormal3d(8,8,-8);
glVertex3d(-2,-2,-2);
glVertex3d(-2,2,-2);

//cara 4

glColor3f(0,1,0);
glVertex3d(2,-2,2);
glVertex3d(2,2,2);
glVertex3d(2,2,-2);
glVertex3d(2,-2,-2);

//cara 5

glColor3f(1,1,0);
glVertex3d(-2,2,2);
glVertex3d(-2,2,-2);
glVertex3d(2,2,-2);
glVertex3d(2,2,2);

//cara 6

glColor3f(0,1,1);
glVertex3d(-2,-2,2);
glVertex3d(2,-2,2);
glVertex3d(2,-2,-2);
glVertex3d(-2,-2,-2);
glEnd();
glPopMatrix();



glutSwapBuffers();
}

No hay comentarios:

Publicar un comentario