Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Hace lo suficiente
Efectos tiles de sntesis con alto rendimiento
Dibuja Objetos
Ve Objetos
Especifica modelos de color
Aplica Iluminacin
Mejora Imgenes
Manipula Bitmaps e Imgenes
Mapea Texturas
OpenGL para el Programador
Aplicacin
API de OpenGL
Hardware y Software
Geometry
Vertex Primitive
Operations Scan Fragment
Framebuffer
Conversion Operations
Pixel Texture
Images
Operations Memory
Libreras de OpenGL
OpenGL Core Librery
OpenGL32 en Windows
Provee principalmente funcionalidad para
renderear
glColor3f(x,y,z)
Pertenece a la Nmero de
librera GL argumentos
glVertex3fv(p)
El argumento es un
apuntador a un arreglo
#defines
La mayora de las constantes estn definidas en
los archivos:
gl.h, glu.h y glut.h
Nota: glut.h incluye automticamente a las otras
Funciones callback
Funcin de desplegado
Funciones para el manejo de eventos de entrada y de
ventanas
Funcin de reposo (Idle)
Programa Sencillo
Dibujar un cuadro blanco en una ventana de
fondo negro
simple1.c
#include <GL/glut.h> Librera necesaria
void myDisplay(){
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POLYGON);
glVertex2f(-0.5, -0.5);
glVertex2f(-0.5, 0.5); Funcin callback de desplegado
glVertex2f(0.5, 0.5);
glVertex2f(0.5, -0.5);
glEnd();
glFlush();
}
int main(){ Creacin de una ventana
glutCreateWindow("simple1"); Creacin de una ventana
glutDisplayFunc(myDisplay);
Definicin de la funcin
glutMainLoop(); callback de desplegado
}
Entrada al ciclo de eventos
Ciclo de Eventos
La funcin principal (main) siempre termina con el
programa introducindose en un ciclo de eventos:
glutMainLoop()
int main( ){
glutInitDisplayMode(GLUT_RGB);
glutInitWindowSize(300,300); Definicin de propiedades de la ventana
glutInitWindowPosition(0,0);
glutCreateWindow("simple2");
glutDisplayFunc(myDisplay);
initializeGL();
Inicializacin de propiedades (nuestra
glutMainLoop(); funcin)
}
Propiedades de la Ventana
gluInitDisplayMode
Color RGB
glutWindowSize
Tamao en pixeles
glutWindowPosition
Posicin de la esquina superior izquierda
glutCreateWindow
Creacin dando el ttulo simple2
Inicializacin
void initializeGL()
{
Color negro de fondo
Opaco
glClearColor (0.0, 0.0, 0.0, 1.0);
Dibujo en 2D
Sistemas Coordenados
No se tiene que usar toda la ventana para
desplegar la imagen:
glViewport(x,y,width,height)
x, y definen la esquina inferior izquierda
width y height el ancho y alto
En pixeles
Algunas Primitivas de Dibujo
Puntos
GL_POINTS
Lneas
GL_LINES
GL_LINE_STRIP
GL_LINE_LOOP
Formas
GL_TRIANGLES
GL_TRIANGLE_STRIP
GL_TRIANGLE_FAN
GL_POLYGON
GL_QUAD_STRIP
Puntos y Lneas (ver simple3.c)
Formas (ver simple4.c)
Polgonos
OpenGL desplegar correctamente nicamente
polgonos que cumplan con ser:
Simples
Convexos
Planos
El programa del usuario debe verificar que lo anterior
se cumpla
ver simple5.c
Interpolacin Lineal
glBegin(GL_LINES);
glColor3f(1.0, 0.0, 0.0); // rojo
glVertex2f( 0, 0);
glColor3f(0.0, 0.0, 1.0); // azul
glVertex2f( 1, 0);
glEnd();
Atributos Tamao del Punto
glPointSize(GLfloat size)
Cambia el ancho en pixeles para renderear puntos
El tamao deber ser mayor a 0.0 y por default es
1.0.
Atributos Ancho de Lnea
glLineWidth(GLfloat width):
Cambia el ancho en pixeles para rederear lneas
El tamao debe ser mayor a 0.0 y por default es
1.0.
Atributos Patrn de Lnea
Se puede habilitar o deshabilitar:
glEnable (GL_LINE_STIPPLE)
glDisable(GL_LINE_STIPPLE)
Se cambia el patrn de la lnea con:
glLineStipple(GLint scaleFactor,
GLushort pattern)
Atributos Patrn de Lnea
glLineStipple(GLint scaleFactor, GLushort pattern)
Patrn hexadecimal (16 bits de 0s y 1s)
El patrn se repite cuantas veces sea necesario a lo largo
de la lnea
Los 1s indican que hay dibujo, los 0s que no hay
El patrn puede escalarse utilizando un factor que
multiplica la longitud del patrn
Por ejemplo: si tres 1s consecutivos aparecen en el
patrn, entonces se extendern a 6 si el factor es igual a
dos
ver simple6.c
Transparencia
Conocida como el canal Alfa del color, determina que
tanto se puede ver a travs del objeto
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBegin(GL_LINES);
glEnd();
Una Lnea Parcialmente Transparente
ver simple7.c
Modelos de Sombreado
El modo por default es el sombreado suave
(smooth shading)
glShadeModel(GL_SMOOTH)
OpenGL interpola los colores en los vrtices a
travs del polgono
Modelos de Sombreado
Otro modo es el sombreado plano (flat
shading)
glShadeModel(GL_FLAT)
El color del primer vrtice determina el color de
relleno de todo el polgono
Modo de Dibujo de Lneas
El modo por default es jagged lines
glDisable(GL_LINE_SMOOTH)
Rpido de calcular, pero no se ve bien
50x aumento:
Lneas Suaves Anti-Aliasing
Puede habilitarse el modo de dibujo suave
para lneas
glEnable(GL_LINE_SMOOTH)
Ms lento de calcular, pero se ve mejor
50x aumento: