Opengl
Qué es OpenGL
• Librerías gráficas que facilitan el interfaz con el Hw gráfico • Independiente del Hardware • Primitivas geométricas básicas • No incluye gestión de ventanas, teclado, etc.
Qué permite OpenGL
• Describir la geometría de los objetos a partir de las primitivas básicas • Situar los objetos y el punto de vista • Cálculo de color, incluyendo iluminación,texturas, etc. • Generación de la imagen final, efectuando operaciones de culling, z-buffer, etc.
Introducción
• OpenGL como máquina de estados • Algunas propiedades mantienen su valor hasta que se les asigne otro o se desactive. • glEnable/glDisable • Valores por defecto • Funciones de acceso al valor actual
Introducción
• • • • Color actual. Punto de vista. Transformaciones deproyección. Estilo de líneas y polígonos.
Introducción
• Modos de dibujar polígonos. • Posición y características de las fuentes de iluminación. • Propiedades de los materiales de los objetos
Introducción
• Librerías afines a OpenGL
– OpenGL Utility Library (GLU) – OpenGL Auxiliary Library (AUX) /GLUT – OpenGL Extention to the X Windows System (GLX)
Introducción
• Librerías:
–http://www.opengl3d.org – http://mesa3d.sourceforge.net – http://www.sgi.com/software/opengl/glut.html
Sintaxis de OpenGL
• Funciones con prefijo gl • Constantes con prefijo GL_ • Algunas funciones con sufijo
– Número de parámetros – Tipo de los parámetros glColor3f() glVertex3i()
Tipos de datos
Son equivalentes: glVertex2i (1, 3); glVertex2f (1.0, 3.0); Son equivalentes: glColor3f (1.0, 1.0, 1.0);float color_array[] = {1.0, 1.0, 1.0}; glColor3fv (color_array);
main () { AbrirVentana (); glClearColor (0.0, 0.0, 0.0, 0.0); glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glOrtho (-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); 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 (); }
Dibujar en 3D
•Limpiar ventana
void glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); void glClear (GLbitfield mask);
Posibles Buffers:
GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT GL_ACCUM_BUFFER_BIT GL_STENCIL_BUFFER_BIT
• Valor por defecto: (0,0,0,0) • Ejemplo: glClearColor (0.5, 0.5, 0.5, 0.0); glClear (GL_COLOR_BUFFER_BIT);
• Especificar color
void glColor3f(GLclampf red,GLclampf green, GLclampf blue);
Función glColor3f () glColor3f (0.0, 0.0, 0.0); glColor3f (1.0, 0.0, 0.0); glColor3f (0.0, 1.0, 0.0); glColor3f (1.0, 1.0, 0.0); glColor3f (0.0, 0.0, 1.0); glColor3f (1.0, 0.0, 1.0); glColor3f (0.0, 1.0, 1.0); glColor3f (1.0, 1.0, 1.0); Color negro rojo verde amarillo azul magenta cian blanco
• Forzar a la Finalización del Dibujo. void glFlush (void); Fuerza a loscomandos de OpenGl a finalizar su ejecución en un tiempo finito a partir de este momento
Vértices
• void glVertex{234}{sifd}{v} (TYPE coords);
Ej.: glVertex3f(10.0f, 5.0f, 3.0f)
Primitivas
• Interpretación de un conjunto de vértices, dibujados de una manera específica en pantalla.
Puntos (GL_POINTS)
• Los vértices se interpretan como puntos
Puntos (GL_POINTS)
• Tamaño de puntovoid glPointSize (GLfloat size); Por defecto size=1 • Rango de valores posibles glGetFloatv (GL_POINT_SIZE_RANGE);
Líneas (GL_LINES)
Tiras de líneas
Líneas
• Grosor de la línea void glLineWidth (GLfloat width); • Patrón de línea void glLineStipple (Glint factor, Glshort pattern); Es necesario activarlo/desactivarlo glEnable (GL_LINE_STIPPLE) glDisable (GL_LINE_STIPPLE)
Líneas//color de fondo glClearColor(1.0, 1.0, 0.8, 1.0); glClear(GL_COLOR_BUFFER_BIT); //color de dibujo glColor3f (0.0, 0.0, 0.0); //grosor de línea glLineWidth(2.0); //se activa el patrón de línea glEnable(GL_LINE_STIPPLE); for(i=1;i=360) angulo=0.0; funcionDePintado(); }
int main(int argc, char** argv) { auxInitDisplayMode (AUX_SINGLE | AUX_RGB); auxInitPosition (0, 0, 250, 250); auxInitWindow...
Regístrate para leer el documento completo.