Examen Graf

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 3

Magos Rivera Rafael Quetzal

OpenGL es una especificación estándar que define una API multilenguaje y multiplataforma para
escribir aplicaciones que produzcan gráficos 2D y 3D. La interfaz consiste en más de 250 funciones
diferentes que pueden usarse para dibujar escenas tridimensionales complejas a partir de
primitivas geométricas simples, tales como puntos, líneas y triángulos. Fue desarrollada
originalmente por Silicon Graphics Inc. en 19922 y se usa ampliamente en CAD, realidad virtual,
representación científica, visualización de información y simulación de vuelo. También se usa en
desarrollo de videojuegos, donde compite con Direct3D en plataformas Microsoft Windows.

Explique brevemente las primitivas de OpenGL y elabore un programa con ejemplos de cada una
de ellas.

1. Puntos – glBegin(GL_POINTS);

Se dibuja un punto en las coordenadas especificadas y con el color actual por cada llamado a
glVertex

2. Líneas Individuales glBegin(GL_LINES);

Con esta primitiva es posible dibujar líneas separadas. Cada para de vértices especificados se
dibuja una línea y si se especifica un numero impar de vértices, el último es ignorado.

3. Líneas Conectadas glBegin(GL_LINE_STRIPS);

Permite dibujar un conjunto de líneas conectadas, donde los dos primeros vértices forman una
línea y cada vértice adicional genera una línea que une dicho a vértice con último suministrado
antes de este.

4. Líneas en Ciclo glBegin(GL_LINE_LOOP);

Similar a LINE_STRIPS, con la diferencia de que la último vértice en ser suministrado se une con el
primero para formar una última línea.
5. Triángulos independientes glBegin(GL_TRIANGLES);

Simple, cada tres vértices se genera un nuevo triangulo con la cara frontal determinada por el
orden que este activo, bien sea CCW o CW. Evidentemente la cantidad de vértices debe ser 0 o
múltiplo de tres, los últimos vértices que no correspondan a ninguna tripleta son despreciados.

6. Triángulos conectados glBegin(GL_TRIANGLE_STRIP);

Similar a LINE_STRIPS, los primeros tres vértices generan un triangulo y luego cada vértice
adicional genera otro que comparte un lado del triangulo anterior, es decir si se suministran los
vértices a,b,c,d,e se formarán los triángulos abc , cbd y cde. La razón por la que se invierte el orden
de los vértices en algunos triángulos, cbd por ejemplo, es para preservar el winding de la primitiva.

7. Triángulos en abanico glBegin(GL_TRIANGLE_FAN);

Esta primitiva genera un conjunto de triángulos alrededor de un punto común, al igual que
TRIANGLE_STRIPS, estos están conectados por un lado. En este caso el proporcionar los vértices
a,b,c,d,e generarán los triángulos abc, acd y ade.

8. Rectángulos Independientes glBegin(GL_QUADS);

Cada cuatro vértices proporcionados es generado un rectángulo, si son proporcionados vértices


que no corresponden a ningún grupo de cuatro, dichos vértices son descartados.

9. Rectángulos Conectados glBegin(GL_QUAD_STRIP);

Los primeros cuatro vértices generan un rectángulo, luego cada par adicional de vértices genera
un nuevo rectángulo conectado con los dos últimos vértices especificados en el anterior. Esta
primitiva es bastante particular, ya que los bordes deben ser suministrados de manera alternada
con el fin de preservar el winding, esto se ve mas claramente en el ejemplo y el gráfico.

10. Polígonos Generales glBegin(GL_POLYGON);

Esta primitiva es una representación general de un polígono, lo que incluye un triángulo,


rectángulo o cualquier polígono de n lados. Existe una restricción adicional y es que al especificar
polígonos, además de que todos los vértices tienen que ser coplanares y es que el polígono tiene
que ser convexo. Si alguna o ambas de estas condiciones no se cumplen, OpenGL dibujará los
polígonos de formas no esperadas y generalmente indeseables.

Ejemplo primitivas:

glClear( GL_COLOR_BUFFER_BIT );

glMatrixMode( GL_MODELVIEW ); /* Los comandos para matriz modificarán ''modelview'' */

glLoadIdentity(); /* Inicializar ''modelview'' */

glTranslatef( 0, 0, -3 ); /* Desplazar 3 unidades en el eje Z */

glMatrixMode( GL_PROJECTION ); /* Los comandos para matriz modificarán ''projection'' */

glLoadIdentity(); /* Inicializar ''projection'' */

glFrustum( -1, 1, -1, 1, 1, 1000 ); /* Aplicar una proyección en perspectiva */

glBegin( GL_POLYGON ); /* Inicio de polígono */

glColor3f( 0, 1, 0 ); /* Establecer color actual a verde */

glVertex3f( -1, -1, 0 ); /* Establecer un vértice */

glVertex3f( -1, 1, 0 ); /* Establecer un vértice */

glVertex3f( 1, 1, 0 ); /* Establecer un vértice */

glVertex3f( 1, -1, 0 ); /* Establecer un vértice */

glEnd(); /* Fin de polígono */

bibliografía
https://lsi.ugr.es/fjmelero/ig/opengl1.pdf

También podría gustarte