Primitivas en OpenGL

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:

glEnable(GL_LINE_SMOOTH);
…
glBegin(GL_LINES);
	glVertex3f(0.0f,0.0f,0.0f);
	glVertex3f(1.0f,0.0f,0.0f); //eje x
	glVertex3f(0.0f,0.0f,0.0f);
	glVertex3f(0.0f,1.0f,0.0f); //eje y
	glVertex3f(0.0f,0.0f,0.0f);
	glVertex3f(0.0f,0.0f,1.0f); //eje z
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:

…
glBegin(GL_LINE_STRIPS);
	glVertex3f(0.0f,0.0f,0.0f);
	glVertex3f(1.0f,0.0f,0.0f); //Primera linea
glVertex3f(1.0f,1.0f,0.0f); //Segunda linea
	glVertex3f(0.0f,1.0f,0.0f); //Tercera linea
	glVertex3f(0.0f,0.0f,0.0f); //Cuarta linea
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:

…
glBegin(GL_LINE_ LOOP);
	glVertex3f(0.0f,0.0f,0.0f);
	glVertex3f(1.0f,0.0f,0.0f);
glVertex3f(1.0f,1.0f,0.0f);
	glVertex3f(0.0f,1.0f,0.0f);
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

download


Descargar:	lineas.zip
Version:	0.1
Actualizado:	December 22, 2009
Tamaño:		115.26 KB

El ejemplo de primitivas linea.

1 2 3 4

Compartir esta entrada

DiggReddit
  • 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.

  • nolasco

    bueno todo esta bonito
    pero me gustaria que sean mas orientaodos a los codigos bueno yo se mas o menos
    todo lo que e leido buneo ya lo sabia pero quisiera ssaber como dar movientos a cualquier objeto no sobre su propio eje ya sea y,x,z sino
    por ejeplo un carrito que avance en forma horizontal

  • http://black-byte.com/ jotatsu

    En el tutorial “Transformaciones en OpenGL encontrarás algo de información al respecto.

  • darkniel

    excelente trabajo, muy didactico, me sirvio de mucho, gracias

  • rojiza

    Hola
    Aqui les dejo un link donde encontrar algunos ejemplo de programas en opengl

    bueno ami me sirvieron.
    http://openglenc.es.tl

  • Yorjander

    muy buena la informaciu00f3n que se ha publicado, pero seru00eda mu00e1s interesante si pusieru00e1n mas ejemplos de cu00f3digo.