Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Hace lo suficiente
Aplicacin
Paquete de Grficas
API de OpenGL
Hardware y Software
Dispositivos de Entrada
Dispositivos de Salida
Vertex
Pixel
Operations
Scan
Conversion
Texture
Memory
Fragment
Operations
Framebuffer
Images
Geometry
Primitive
Operations
Libreras de OpenGL
OpenGL Core Librery
OpenGL32 en Windows
Provee principalmente funcionalidad para
renderear
Libreras de OpenGL
OpenGL Utility Toolkit (GLUT)
Provee capacidades bsicas de ventanas
Utilizado para el manejo de eventos de entrada:
Mouse, teclado, mes
Rutinas callback
Libreras de OpenGL
Nombres de Funciones
Las funciones de OpenGL siguen una
convencin de nombre que se refiere a:
A qu librera pertenece dicha funcin
El nombre de la funcin
Y el nmero y tipo de los argumentos que recibe
Nombres de Funciones
Nombre de la
Funcin
Tipo de
argumentos
glColor3f(x,y,z)
Pertenece a la
librera GL
Nmero de
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
Tipos de Datos
Para hacer ms fcil el portar cdigo OpenGL
de una plataforma a otra, ste define sus
propios tipos de datos
Todos los tipos de datos empiezan con GL para
denotar que vienen de la librera OpenGL,
seguidos del tipo de dato correspondiente a C
Tipos de Datos
Tipo OpenGL
Tipo C
Tamao
GLbyte
signed char
Entero 8 bits
GLshort
short
Entero 16 bits
GLint, GLsizei
long
Entero 32 bits
GLfloat, GLclampf
float
Flotante 32 bits
Flotante 64 bits
GLushort
unsigned short
GLuint, GLenum,
GLbitfield
unsigned long
Estructura de un Programa
La mayora de los programas que usan
OpenGL contienen:
main()
Abre 1 o ms ventanas
Define las funciones callback
Entra al ciclo de eventos (ltima instruccin)
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);
glVertex2f(0.5, 0.5);
glVertex2f(0.5, -0.5);
glEnd();
glFlush();
}
int main(){
glutCreateWindow("simple1");
glutDisplayFunc(myDisplay);
glutMainLoop();
}
Ciclo de Eventos
La funcin principal (main) siempre termina con el
programa introducindose en un ciclo de eventos:
glutMainLoop()
El programa siempre define una funcin callback
de desplegado: myDisplay()
La funcin callback ser llamada cada vez que se
produzca un evento, como presionar una tecla o
cambiar de tamao la ventana
La funcin callback termina con un glFlush() (obliga a
ejecutar cualquier instruccin que haya quedado
pendiente)
Defaults
GLUT provee valores por default para cmaras,
colores, parmetros de la ventana, etc.
simple1.c hace uso de los valores por default, por
eso queda tan sencillo
Ahora haremos cambios en diferentes propiedades
de:
Ventana
Colores
Vistas
simple2.c
#include <GL/glut.h>
int main( ){
glutInitDisplayMode(GLUT_RGB);
glutInitWindowSize(300,300);
glutInitWindowPosition(0,0);
glutCreateWindow("simple2");
glutDisplayFunc(myDisplay);
initializeGL();
glutMainLoop();
}
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
glMatrixMode(GL_PROJECTION);
Vista
glLoadIdentity();
Inicializacin de la matriz de la vista
gluOrtho2D(-1.0, 1.0, -1.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
Lneas
GL_LINES
GL_LINE_STRIP
GL_LINE_LOOP
Formas
GL_TRIANGLES
GL_TRIANGLE_STRIP
GL_TRIANGLE_FAN
GL_POLYGON
GL_QUAD_STRIP
Polgonos
OpenGL desplegar correctamente nicamente
polgonos que cumplan con ser:
Simples
Convexos
Planos
Polgonos Simples
Las aristas no se cruzan
Polgonos Convexos
Todos los puntos en un segmento de lnea
entre dos puntos dentro del polgono
quedarn tambin dentro del polgono
Polgonos Planos
Todos los vrtices estn dentro del mismo
plano
Atributos
Los atributos son:
Parte de la librera OpenGL
Determinan la apariencia de los objetos
Ejemplos
Color (puntos, lneas, polgonos)
Tamao y ancho (puntos, lneas)
Patrones (lneas, polgonos)
Modo poligonal
Desplegado relleno
Desplegado slo de aristas
Atributos -- Color
glColor3f(Glfloat rojo, Glfloat verde, Glfloat azul)
glEnd();
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();
Transparencia
Conocida como el canal Alfa del color, determina que
tanto se puede ver a travs del objeto
El color necesita 4 componentes ahora:
glColor4f(R, G, B, Alfa);
Transparencia
Se necesita habilitar la mezcla de transparecia:
glEnable(GL_BLENDING)
glEnable(GL_BLEND);
cambiar el modo de mezcla
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBegin(GL_LINES);
glColor4f(0, 1.0, 0, 1.0); verde opaco
glVertex2f(0.0, 0.0);
glColor4f(0, 1.0, 0, 0.0); verde transparente
glVertex2f(1.0, 0.0);
glEnd();
ver simple7.c
Modelos de Sombreado
El modo por default es el sombreado suave
(smooth shading)
glShadeModel(GL_SMOOTH)
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