Práctica 2. Primitivas en OpenGL.

 La manera en la que OpenGL dibuja las cosas es en base a primitivas que pueden ser puntos, segmentos de linea y polígonos. No importa que sencillas o complejas sean las cosas que queremos dibijar, primero las vamos a tener que paritr en primitivas que después podremos dibujar. Cada primitiva se define en términos de los vértices que la componen (utilizando el comando glVertex ), el color que vamos a utilizar en ese vértice (usando glColor ) y las caracteristicas específicas para el tipo de primitiva.

 Cada vez que queramos hacer que se dibuje una primitiva debemos llamar el comando glBegin(), indicando el tipo de primitiva que vamos a dibujar, dar las coordenadas de los vértices y terminar con el comando glEnd. En la siguiente tabla hay un resumen con los tipos de parámetros que podemos dar a glBegin():

Valor

Función

GL_POINTS Dibuja un punto por cada vértice
GL_LINES Dibuja un segmento de recta por cada par de vértices
GL_LINE_STRIP Se dibuja un segmento desde el vértice 0 al 1, del 1 al 2, del 2 al 3 y así sucesivamente hasta trazar un segemento entre el último y penúltimo vértice
GL_LINE_LOOP Igual que GL_LINE_STRIP pero además dibuja un segmento que une el último con el primer vértice
GL_TRIANGLES Dibuja un triángulo por cada 3 vértices
GL_TRIANGLE_STRIP Dibuja un triángulo con los primeros tres vértices, depués, para cada nuevo vértice dibuja un nuevo triángulo utilizando los últimos 3 vértices
GL_TRIANGLE_FAN Dibuja un triángulo con los primeros tres vértices, depués, para cada nuevo vértice dibuja un nuevo triángulo utilizando los últimos 2 vértices y el primero
GL_QUADS Dibuja un cuadrilátero por cada 4 vértices
GL_QUAD_STRIP Dibuja un cuadrilátero usando los primeros 4 vértices, después, para cada nuevo par de vértices se dibuja un cuadrilatero utilizando los últimos 4 vértices.
GL_POLYGON Dibuja un polígono convexo usando los vértices

Un ejemplo del uso de glBegin es el siguiente:

procedure TForm1.DibujarOGL;
begin
   glClear(GL_COLOR_BUFFER_BIT);
   glLoadIdentity;
   glBegin(GL_TRIANGLES);
     glVertex3f( 0, 0, 0);
     glVertex3f( 1, 0, 0);
     glVertex3f( 0, 1, 0);
   glEnd;
   glFlush;
   SwapBuffers(wglGetCurrentDC);
end;

Dibujando primitivas.

 En OpenGL podemos llamar a algunos comandos que modifican la forma en la que se dibujan las primitivas. Vamos a ver estos comandos según el tipo de primitiva que afectan:

Puntos

Líneas

Polígonos