Este tutorial cubre el manejo de primitivas en OpenGL, fundamental a la hora de realizar cualquier tipo de aplicación 3d, ya que con estas (especialmente los triángulos) es que se representan los objetos 3d en los videojuegos. Al igual que en los anteriores tutoriales vale la pena aclarar que la documentación sobre la que se basa este tutorial es la de la implementación 1.1 de OpenGL, que aún sigue vigente en la implementación actual, pero con variaciones gracias a la introducción de nuevas tecnologías en las tarjetas gráficas.
Este tutorial, a diferencia de los anteriores, permite ver en acción las capacidades de OpenGL al mismo tiempo que su sencillez, posteriormente, con la introducción de las transformaciones, texturas, iluminación, extensiones y shaders se mostrara la potencia que la actual versión de OpenGL permite.
PRIMITIVAS
En el mundo físico los objetos poseen formas variadas que no necesariamente guardan relación con los objetos en la geometría básica. En los videojuegos y demás software 3d en tiempo real, representar esas formas de manera exacta sería muy costoso computacionalmente hablando (hardware), al punto de que sería casi imposible con la tecnología actual, es por eso que se usan aproximaciones para hacer que las cosas se vean lo mas cercanas posibles a la realidad y al mismo tiempo, lo mas ajustado posible a las capacidades del hardware actual. Al fin y al cabo hay un dicho en computación gráfica “si luce bien, esta bien”.

Un modelo hecho de triángulos a la izquierda, a la derecha con superficie e iluminación.
OpenGL hace uso del lo que sus creadores llaman el “paradigma Begin/End”, que simplemente es la forma en que se pasan las instrucciones para indicar al API como se deben armar las primitivas, a través de dos funciones:
void glBegin( enum mode );
void glEnd( void );
La función glBegin() indica a OpenGL que los siguientes llamados a la funcion glVertex(), entre esta y glEnd() deberán ser interpretados como vértices para ensamblar la primitiva especificada en (enum mode), el parámetro de la función glBegin(). Adicionalmente a especificar vértices es posible especificar colores, normales, materiales y texturas entre los llamados de glBegin() y glEnd().
Los vértices sumistrados entre los llamados del glBegin() – glEnd() pueden ser cualquiera de la forma:
void Vertex{234}{sifd}v( T coords );
que significa que pueden tener dos, tres o cuatro parámetros y ser entero corto, entero, flotante o doble, al mismo tiempo que pueden o no estar contenidos en un vector.
Es posible especificar diez tipos de primitivas diferentes al llamar la función glBegin(), estas son:
1. Puntos - glBegin(GL_POINTS);
Se dibuja un punto en las coordenadas especificadas y con el color actual por cada llamado a glVertex. Esta primitiva se ve afectada entre otras por las siguientes funciones:
void glPointSize( float size ); : Cambia el tamaño de los puntos en píxeles por size, el tamaño por defecto es 1.0. El tamaño de un punto varia con la distancia de a la cámara por lo que a mayor distancia se vera mas pequeño para dar un efecto de profundidad
Esta primitiva se ve afectada entre otros por este estado:
GL_POINT_SMOOTH : Indica si el punto debe se suavizado o no.
Ejemplo:
-
glPointSize(3.0f);
-
…
-
glBegin(GL_POINTS);
-
glVertex3f(1.0f,1.0,1.0);
-
glVertex2f(3.5f,1.0f);
-
glEnd();
-
…
Este código dibuja dos puntos, uno en (1,1,1) y (3.5,1,0), de tamaño 3 píxeles y con sus respectivas atenuaciones de tamaño, dependientes de la distancia a la cámara. A pesar de que el llamado de glBegin() no genera un bloque de código como los corchetes, es recomendable usar un espacio tabulado para indicar que esas líneas de código se encuentran entre el llamado a un glBegin() y un glEnd().
Debido a que hacer un ejemplo mostrando un punto en pantalla es bastante seco y aburrido, la aplicación que muestra el conjunto de puntos en forma de cilindro, utilizando las funciones seno y coseno para trazar la circunferencia e incrementando una variable de profundidad.

El ejemplo de primitiva punto.


,
si usted cree que sus derechos de propiedad intelectual han sido vulnerados en esta pagina escriba a
¿Tendrá consecuencias ideológicas, formativas y sociales, la forma de pensar:
“si luce bien, esta bien”
?
Por cierto, la palabra “está” se acentúa.