LINEAS

OpenGL tiene tres primitivas para pintar líneas, estas son individuales, conectadas y en ciclo. Todas estas formas de dibujar líneas varían en la manera en que se interpretan una serie de vértices.

El dibujo de líneas se ve afectadas por las siguientes funciones:

glLineWidth(GLfloat width); : Cambia el tamaño de representación de las líneas por width ( el tamaño por defecto es 1), el tamaño debe ser mayor que 0.

glLineStipple(GLint factor, GLushort pattern) : Genera un patrón según el cual serán pintadas las líneas. Pattern es un valor de 16 bits, donde cada bit indica si un segmento del tamaño de un píxel debe estar apagado o prendido. Factor es una modificación a la cantidad de píxeles que representa un bit en pattern, así si factor es 5 cada bit en pattern será dibujado como 5 píxels, bien sean estos prendidos o apagados.

En general las 3 primitivas de líneas se ven afectadas por los estados:

GL_LINE_SMOOTH : Indica si las líneas deben ser suavizadas o no.
GL_LINE_STIPPLE : Si este estado esta activo se aplica el patrón definido por glLineStipple().

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.

Ejemplo:

C++:
  1. glEnable(GL_LINE_SMOOTH);
  2. glBegin(GL_LINES);
  3.     glVertex3f(0.0f,0.0f,0.0f);
  4.     glVertex3f(1.0f,0.0f,0.0f); //eje x
  5.     glVertex3f(0.0f,0.0f,0.0f);
  6.     glVertex3f(0.0f,1.0f,0.0f); //eje y
  7.     glVertex3f(0.0f,0.0f,0.0f);
  8.     glVertex3f(0.0f,0.0f,1.0f); //eje z
  9. glEnd();

Estas líneas de código dibuja un 3 segmentos de líneas de tamaño 1, a lo largo de cada uno de los 3 ejes (x,y,z), partiendo del origen (0,0,0).

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.

Ejemplo:

C++:
  1. glBegin(GL_LINE_STRIPS);
  2.     glVertex3f(0.0f,0.0f,0.0f);
  3.     glVertex3f(1.0f,0.0f,0.0f); //Primera linea
  4. glVertex3f(1.0f,1.0f,0.0f); //Segunda linea
  5.     glVertex3f(0.0f,1.0f,0.0f); //Tercera linea
  6.     glVertex3f(0.0f,0.0f,0.0f); //Cuarta linea
  7. glEnd();

Este código dibuja un cuadrado de lado 1 sobre el plano XY.

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.

Ejemplo:

C++:
  1. glBegin(GL_LINE_ LOOP);
  2.     glVertex3f(0.0f,0.0f,0.0f);
  3.     glVertex3f(1.0f,0.0f,0.0f);
  4. glVertex3f(1.0f,1.0f,0.0f);
  5.     glVertex3f(0.0f,1.0f,0.0f);
  6. glEnd();

Este ejemplo dibuja lo mismo que el anterior, observando claro está que en este caso no se suministra el punto (0,0,0) al final, ya que esta línea se genera al conectar el punto (1,1,1) con el primer vértice.

Ejemplo Lineas

El ejemplo de primitivas linea.

COMENTARIOS
  1. Comentario por Jonathan .

    ¿Tendrá consecuencias ideológicas, formativas y sociales, la forma de pensar:

    “si luce bien, esta bien”

    ?

    Por cierto, la palabra “está” se acentúa.


Dejar un comentario

:mrgreen: :| :twisted: :arrow: 8O :) :? 8) :evil: :D :idea: :oops: :P :roll: ;) :cry: :o :lol: :x :( :!: :?: