lunes, 28 de septiembre de 2009

Atributo de Primitivas de Linea

Para dibujar un punto o una linea, etc.. OpenGl usa la misma función glvertex(x,y,z) con 3 parametros que indican un punto en el espacio 3D, por ejemplo glvertex3f(0,0,0) le indicamos el punto 0,0,0 en el eje x y z. glvertex tambien puede tener 2 o 4 argumentos por ejemplo glvertex2d(x,y) nos sirve para indicar un punto en 2 dimensiones.


Entonces, la pregunta que nos podemos hacer es como sabe OpenGL que quiero dibujar un punto o una linia ? Pues bien esto se hace con las primitivas, tenemos diferente tipos de primitivas que cuando le indicamos una de ellas pues se dibuja una cosa o otra, para indicar que tipo de primitiva queremos usar llamaremos a la funcion glBegin a la que le pasaremos por parametros el tipo de primitiva que queremos emplear y al finalizar de dibujar usaremos la función glEnd para indicar el fin.



Por ejemplo si queremos dibujar quadrados le indicarremos que el tipo poligono es GL_QUADS para poder dibujar el cuadrado le indicaremos cuatro puntos del espacio. Es muy importante el orden en que dibujaremos siempre lo haremos en el orden contrario horario, sino puede ser que los resultados no sean los que nosotros esperamos.


En la siguiente tabla se muestra las primitivas que acepta la funcion glBegin
GL_POINTS
los vertices que dibujemos solo dibujaran un punto
GL_LINES
cada dos vertices dibujara una linea, si la cantidad de vertices indicados es impar se elimina el ultimo.
GL_LINE_STRIP
se usan los vertices para dibujar lineas.Despues del segundo vertice, cada vertice subsiguente especifica el punto al que se extiende la linea.
GL_LINE_LOOP
igual que GL_LINE_STRIP pero el ultimo vertice de todos se unira con el primero de todos.
GL_TRIANGLES
Dibujara triangulos cada 3 vertices, si el numero de vertices indicados no se puede dibidir en 3 ignora los ultimos.
GL_TRIANGLE_STRIP
Dibujara un triangulo con los 3 primeros vertices despues con los 2 siguientes vertices y el ultimo de los 3 anteriores vuelve a dibujar un triangulo
GL_TRIANGLE_FAN
Dibuja un abanico de triangulos. Cada vertices despues del tercero se usa para dibujar otro triangulo.
GL_QUADS
Dibujara cuadrados cada 4 vertices. Si el numero de vertices no se puede dibidir en 4 ignora los ultimos vertices.
GL_QUAD_STRIP
Dibuja cuadrados consecutivos es decir, coge los dos ultimos vertices indicados con los dos nuevos y va dibujando cuadrados.
GL_POLYGON
con los vertices que indiquemos se dibuja un poligono convexo. El ultimo vertice indicado se cierra con el primero para asegurar que ha quedado cerrado.


En la siguiente imagen podemos ver como dibujarian las primitivas de OpenGL











Entonces si queremos dibujar 3 puntos en el espacio el codigo nos puede quedar de la siguiente forma:
glBegin GL_POINTS
glvertex3f 0,0,0
glvertex3f 0,10,0
glvertex3f 100,0,0
glend
Esto dibujara 3 puntos el primero en las coordenadas x = 0, y = 0, z = 0, el segundo en x = 0, y = 10, z = 0 y por ultimo el tercero en x = 100, y = 0 y z = 0
En el ejemplo de visual basic podéis ver como funcionan las primitivas explicadas.

No hay comentarios:

Publicar un comentario