Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programa Ejemplo, para este ejemplo copiar el código y comenzar a desmarcar los
comentarios para así ver los resultados.
#include <windows.h>
#include <GL/glut.h>
#include <stdlib.h>
/*
const GLfloat AltoBrillo[] = { 128.0f };
const GLfloat MedioBrillo[] = { 64.0f };
const GLfloat BajoBrillo[] = { 12.0f };
*/
using namespace std;
void Inicializa()
{ glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH );
glutInitWindowSize(800,600);
glutCreateWindow("Iluminacion");
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0,50,0,40,-5,5);
}
void ActivaLaLuzFoco1()
{ // PASO 1. ACTIVAMOS LA ILUMINACION
//glEnable(GL_LIGHTING); // Activamos la iluminacion
//glEnable(GL_LIGHT0); // Encendemos la luz 0
//glEnable(GL_NORMALIZE); // Le indicamos a OpenGL que calcule las normales
vertices
// Este parámetro modifica la forma de hacer el cálculo del brillo de luz especular
// GL_TRUE usara para este cálculo un punto fijo del mundo OpenGL con lo que el
// cálculo será más lento pero mejor el resultado.
// GL_FALSE tomara un punto en el infinito para el cálculo, lo que es lo mismo que
// una dirección. Será menos costoso pero menos vistoso.
//glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_FALSE);
//GL_TRUE/GL_FALSE);
// Esto permite dibujear los polígonos por los dos lados correctamente invirtiendo
// las normales en caso de verlos desde el otro lado.
// GL_TRUE para objetos abiertos donde requerimos ver ambas caras, aqui no se usa
// Permite habilitar una luz ambiente general para todo lo que dibujemos, de forma
// que se verá con cierta claridad general.
// GLfloat ambiente_general[ ]={0.2, 0.2, 0.2, 1.0};
// glLightModelfv(GL_LIGHT_MODEL_AMBIENT,ambiente_general);
void Dibuja()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor3f(0.8, 0.80, 0.0);
glPushMatrix();
GLfloat mate_emision[] = { 1.0, 1.0, 1.0 };
glRotatef(10.0,1.0,1.0,1.0);
glPushMatrix();
glTranslatef(10.0,20.0,0.0);
glScalef(4.0,4.0,4.0);
glRotatef(AnguloLento,1.0,1.0,1.0);
glutSolidIcosahedron();
glPopMatrix();
AnguloLento+=0.1;
if (AnguloLento>360) AnguloLento=0.01;
glutPostRedisplay();
glutSwapBuffers();
}