Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Qué es OpenGL
• Interface software entre el programador y el hardware gráfico
• Se posicionan en el espacio 3D
• Se selecciona el punto de vista
• Se calcula el color de todos los objetos
– según las condiciones de luz
– obtenidas a partir de las texturas
– indicado directamente por el programador
• OpenInventor
– toolkit orientado a objeto para crear aplicaciones 3D interactivas
Otras herramientas
• Sobre OpenGL pueden
desarrollarse herramientas más
complejas
Aplicaciones
OpenGL con la librería GLUT
OpenGL: una API, no un lenguaje
• OpenGL no es un lenguaje de programación
• Sigue la convención de llamadas a C
void DibujaEscena()
{
glClearColor (0., 0., 1., 1.); // color de borrar
glClear(GL_COLOR_BUFFER_BIT); // borramos pantalla
glFlush(); // forzamos el dibujo
}
int main()
{
// Funciones GLUT para inicializar la ventana
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGBA);
glutInitWindowSize (250, 250);
glutCreateWindow (“Mi primer programa OpenGL");
// Borra la ventana
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
} y
x
Ventana y volumen de trabajo
(-1,1,1)
(0.1,0.1,0)
x
(-0.1,-0.1,0)
z
Escalado de la ventana
void EscalaVentana(GLsizei w, GLsizei h)
{ .... }
void DibujaEscena()
{ .... }
void main()
{
// Funciones GLUT para inicializar la ventana
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGBA);
glutCreateWindow (“Mi primer programa OpenGL");
glFlush();
}
Definición de la vista
glViewport(0,0,500,250)
250
y (250,250,-1)
(0,250,1)
(250,0,-1)
(0,0,0) x
glOrtho(0,250,0,250,-1,1)
z
Animación con OpenGL y GLUT
void DibujaEscena()
{ .... }
void MueveCuadrado()
{
// Dibujar el cuadrado en su nueva posición
...
glutPostRedisplay();
void main()
{
// Funciones AUX para inicializar la ventana
...
// Indica la función a llamar cuando se escale la ventana
glutIdleFunc(MueveCuadrado);
void DibujaEscena()
{
// Dibujamos la escena
....
glutSwapBuffers();
}
void main()
{
// Funciones AUX para inicializar la ventana
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
...
glutMainLoop();
}
Objetos 3D
• La librería GLUT incluye una docena de objetos 3D
• Por ahora sólo podemos ver su proyección paralela
glutWireTeapot(50.0f) glutSolidTeapot(50.0f)