Sei sulla pagina 1di 29

Practica 05

Primitivas OpenGL

OBJETIVO: Conocer las Primitivas de dibujo


bsicas que posee OpenGL.

Descripcin de Primitivas de
OpenGL
Mtodo

Descripcin

GL2.GL_POINTS

Permite dibujar puntos de forma individual.

GL2.GL_LINES

Para cada par de vrtices en un bloque glBegin, glEnd, dibuja una lnea.

GL2.GL_LINE_STRIP

Para cada par de vrtices consecutivos en un bloque glBegin, glEnd, dibuja


una lnea slida.

GL2.GL_LINE_LOOP

Igual que GL2.GL_LINE_STRIP, solo que tambin dibuja una lnea entre el
primer y ltimo vrtice.

GL2.GL_TRIANGLE

Para cada grupo de 3 vrtices en un bloque glBegin, glEnd, dibuja un


TRINGULO RELLENO.

GL2.GL_TRIANGLE_STRIP

Para cada grupo de 3 vrtices consecutivos dibuja un TRINGULO


RELLENO.

GL2.GL_TRIANGLE_FAN

Dibuja tringulos entre el primer vrtice, y cada pareja de vrtices


consecutivos del restro en un mismo bloque glBegin ... glEnd.

GL2.GL_QUADS

Dibuja figuras cuadrangulares, por cada 4 vrtices en un bloque glBegin, ...


glEnd.

GL2.GL_POLYGON

Dibuja polgonos convexos dado el conjunto de vrtices dentro del bloque


glBegin, ..., glEnd

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Descripcin de Primitivas de
OpenGL
Mtodo

Descripcin

GL2.GL_QUAD_STRIP

Permite dibujar puntos de forma individual.

METODO NUEVO: gl.glPolygonMode(GL2.GL_FRONT_AND_BACK, GL2.GL_LINE);


La llamada a este mtodo con los parmetros GL2.GL_FRONT_AND_BACK, GL2.GL_LINE, permite
desactivar el modo de relleno de los polgonos, y slo dibuja el contorno.
Para restablecer el modo de dibujado por relleno, sustituya GL2.GL_LINE, por GL2.GL_FILL

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Descripcin de Primitivas de
OpenGL
Mtodo

Descripcin

Bloque de dibujo

Bloque donde se indican los vrtices con los cuales


se van a trabajar en una primitiva especfica.
gl.glBegin(PRIMITIVA);
gl.glVertex3f(...); //coordenadas del vrtice 1
gl.glVertex3f(...); //coordenadas del vrtice 2
gl.glVertex3f(...); //coordenadas del vrtice 3
...
gl.glVertex3f(...); //coordenadas del vrtice n
gl.glEnd();

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_POINTS;

Descripcin

Permite dibujar cada punto indicado en el bloque begin...end.

@Override
publicvoiddisplay(GLAutoDrawableglad){
GL2gl=glad.getGL().getGL2();
Cambia el tamao (en
gl.glClear(gl.GL_COLOR_BUFFER_BIT);
pixeles) definido para los

puntos.
gl.glColor3f(0.0f,0.0f,1.0f);

gl.glPointSize(10f);
gl.glBegin(GL2.GL_POINTS);
gl.glVertex3f(0.5f,0.5f,0.0f);//Punto1
gl.glVertex3f(0.5f,0.5f,0.0f);//Punto2
gl.glVertex3f(0.5f,0.5f,0.0f);//Punto3
gl.glVertex3f(0.5f,0.5f,0.0f);//Punto4
gl.glEnd();
}

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_POINTS;

Descripcin

Los puntos aparecen de color azul, y con un tamao de 10 pixeles.


NOTA: Tanto los ejes, la malla, y las leyendas fueron aadidas con el propsito de
mejorar la claridad del ejemplo.

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_LINES;

Descripcin

Permite dibujar una linea, por cada par de vrtices en el bloque begin...end.

@Override
publicvoiddisplay(GLAutoDrawableglad){
GL2gl=glad.getGL().getGL2();
gl.glClear(gl.GL_COLOR_BUFFER_BIT);

gl.glColor3f(0.0f,0.0f,1.0f);
//...DIBUJAPUNTOS

gl.glBegin(GL2.GL_LINES);

gl.glVertex3f(0.5f,0.5f,0.0f);//Punto1
gl.glVertex3f(0.5f,0.5f,0.0f);//Punto2
gl.glVertex3f(0.5f,0.5f,0.0f);//Punto3
gl.glVertex3f(0.5f,0.5f,0.0f);//Punto4
gl.glEnd();
}

Lnea 1
Lnea 2

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_LINES;

Descripcin

Salida Esperada.

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_LINE_STRIP;

Descripcin

Permite dibujar linea, por cada par de vrtices consecutivos en el bloque.

@Override
publicvoiddisplay(GLAutoDrawableglad){
GL2gl=glad.getGL().getGL2();
gl.glClear(gl.GL_COLOR_BUFFER_BIT);

gl.glColor3f(0.0f,0.0f,1.0f);
//...DIBUJAPUNTOS

gl.glBegin(GL2.GL_LINE_STRIP);

gl.glVertex3f(0.5f,0.5f,0.0f);//Punto1
gl.glVertex3f(0.5f,0.5f,0.0f);//Punto2
Lnea
2
gl.glVertex3f(0.5f,0.5f,0.0f);//Punto3
gl.glVertex3f(0.5f,0.5f,0.0f);//Punto4
gl.glEnd();
}

Lnea 1
Lnea 3

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_LINE_STRIP;

Descripcin

Salida Esperada.

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_LINE_LOOP;

Descripcin

Igual que GL2.GL_LINE_STRIP, solo que une el vrtice final con el inicial.

@Override
publicvoiddisplay(GLAutoDrawableglad){
GL2gl=glad.getGL().getGL2();
gl.glClear(gl.GL_COLOR_BUFFER_BIT);

gl.glColor3f(0.0f,0.0f,1.0f);
//...DIBUJAPUNTOS

gl.glBegin(GL2.GL_LINE_LOOP);
Lnea
2

gl.glVertex3f(0.5f,0.5f,0.0f);//Punto1
gl.glVertex3f(0.5f,0.5f,0.0f);//Punto2
gl.glVertex3f(0.5f,0.5f,0.0f);//Punto3
Lnea
4
gl.glVertex3f(0.5f,0.5f,0.0f);//Punto4
gl.glEnd();
}

Lnea 1
Lnea 3

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_LINE_LOOP;

Descripcin

Salida Esperada.

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_TRIANGLES;

Descripcin

Dibuja un Tringulo, por cada 3 vrtices del bloque glBegin()... glEnd();


@Override
publicvoiddisplay(GLAutoDrawableglad){
GL2gl=glad.getGL().getGL2();
gl.glClear(gl.GL_COLOR_BUFFER_BIT);

gl.glColor3f(0.0f,0.0f,1.0f);
//...DIBUJAPUNTOS

gl.glBegin(GL2.GL_TRIANGLES);

gl.glVertex3f(0.5f,0.5f,0.0f);//Punto1
gl.glVertex3f(0.2f,0.4f,0.0f);//Punto2
Tringulo 1
gl.glVertex3f(0.4f,0.2f,0.0f);//Punto3
gl.glVertex3f(0.4f,0.2f,0.0f);//Punto4
gl.glVertex3f(0.5f,0.5f,0.0f);//Punto5
Tringulo 2
gl.glVertex3f(0.2f,0.4f,0.0f);//Punto6
gl.glEnd();
}

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_TRIANGLES;

Descripcin

Relleno Activado (por default), o bien a travs de la llamada a:


gl.glPolygonMode(GL2.GL_FRONT_AND_BACK, GL2.GL_FILL);

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_TRIANGLES;

Descripcin

Desactivacion de relleno mediante:


gl.glPolygonMode(GL2.GL_FRONT_AND_BACK, GL2.GL_LINE);

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_TRIANGLE_STRIP;

Descripcin

Dibuja un Tringulo, por cada 3 vrtices consecutivos del bloque glBegin()... glEnd();

@Override
publicvoiddisplay(GLAutoDrawableglad){
GL2gl=glad.getGL().getGL2();
gl.glClear(gl.GL_COLOR_BUFFER_BIT);

gl.glColor3f(0.0f,0.0f,1.0f);

//gl.glPolygonMode(GL2.GL_FRONT_AND_BACK,GL2.GL_LINE);

gl.glBegin(GL2.GL_TRIANGLE_STRIP);

gl.glVertex3f(0.5f,0.5f,0.0f);//Punto1
Tringulo
2
gl.glVertex3f(0.2f,0.4f,0.0f);//Punto2
Tringulo 1
gl.glVertex3f(0.4f,0.2f,0.0f);//Punto3
gl.glVertex3f(0.4f,0.2f,0.0f);//Punto4
Tringulo 3
gl.glVertex3f(0.5f,0.5f,0.0f);//Punto5
Tringulo 4
gl.glVertex3f(0.2f,0.4f,0.0f);//Punto6
gl.glEnd();
}

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_TRIANGLE_STRIP;

Descripcin

Dibujo de tringulos usando TRIANGLE_STRIP, y con relleno desactivado.

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_TRIANGLE_FAN;

Descripcin

Dibuja Tringulos entre vrtice 1, y cada pareja consecutiva en el bloque glBegin()...


glEnd();
@Override
publicvoiddisplay(GLAutoDrawableglad){
GL2gl=glad.getGL().getGL2();
gl.glClear(gl.GL_COLOR_BUFFER_BIT);

gl.glColor3f(0.0f,0.0f,1.0f);
//gl.glPolygonMode(GL2.GL_FRONT_AND_BACK,GL2.GL_LINE); Vrtice Comn

gl.glBegin(GL2.GL_TRIANGLE_FAN);
gl.glVertex3f(0.0f,0.0f,0.0f);//Punto1
Pareja
para
Pareja para
Tringulo
2
gl.glVertex3f(0.8f,0.0f,0.0f);//Punto2
Tringulo 1
gl.glVertex3f(0.5f,0.4f,0.0f);//Punto3
gl.glVertex3f(0.0f,0.6f,0.0f);//Punto4
Pareja
para
Pareja para
gl.glVertex3f(0.4f,0.4f,0.0f);//Punto5
Tringulo 4
Tringulo 3
gl.glVertex3f(0.8f,0.0f,0.0f);//Punto6
gl.glEnd();
}

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_TRIANGLE_FAN;

Descripcin

Uso de tringulo fan, con relleno desactivado.

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_QUADS;

Descripcin

Dibuja un polgonos de 4 lados, por cada 4 vrtices del bloque glBegin()... glEnd();
@Override
publicvoiddisplay(GLAutoDrawableglad){
GL2gl=glad.getGL().getGL2();
gl.glClear(gl.GL_COLOR_BUFFER_BIT);

gl.glColor3f(0.0f,0.0f,1.0f);
//gl.glPolygonMode(GL2.GL_FRONT_AND_BACK,GL2.GL_LINE);

gl.glBegin(GL2.GL_QUADS);
gl.glVertex3f(0.45f,0.65f,0.0f);//Punto1
Cuadro 1
gl.glVertex3f(0.05f,0.65f,0.0f);//Punto2
gl.glVertex3f(0.05f,0.25f,0.0f);//Punto3
gl.glVertex3f(0.45f,0.25f,0.0f);//Punto4
gl.glVertex3f(0.05f,0.25f,0.0f);//Punto5
Cuadro 2
gl.glVertex3f(0.45f,0.25f,0.0f);//Punto6
gl.glVertex3f(0.45f,0.65f,0.0f);//Punto7
gl.glVertex3f(0.05f,0.65f,0.0f);//Punto8
gl.glEnd();
}

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_QUADS;

Descripcin

Relleno Activado (por default), o bien a travs de la llamada a:


gl.glPolygonMode(GL2.GL_FRONT_AND_BACK, GL2.GL_FILL);

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_QUADS;

Descripcin

Desactivacion de relleno mediante:


gl.glPolygonMode(GL2.GL_FRONT_AND_BACK, GL2.GL_LINE);

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_QUAD_STRIP;

Descripcin

Dibuja un polgono de 4 lados por cada par de PAREJAS DE VERTICES consecutivas;


@Override
publicvoiddisplay(GLAutoDrawableglad){
GL2gl=glad.getGL().getGL2();
gl.glClear(gl.GL_COLOR_BUFFER_BIT);

gl.glColor3f(0.0f,0.0f,1.0f);
//gl.glPolygonMode(GL2.GL_FRONT_AND_BACK,GL2.GL_LINE);

gl.glBegin(GL2.GL_QUAD_STRIP);

gl.glVertex3f(0.45f,0.65f,0.0f);//Punto1
Cuadro 1
gl.glVertex3f(0.05f,0.65f,0.0f);//Punto2
gl.glVertex3f(0.45f,0.25f,0.0f);//Punto3
gl.glVertex3f(0.05f,0.25f,0.0f);//Punto4
Cuadro
2

gl.glVertex3f(0.05f,0.25f,0.0f);//Punto5
Cuadro 3
gl.glVertex3f(0.45f,0.25f,0.0f);//Punto6
gl.glVertex3f(0.05f,0.65f,0.0f);//Punto7
gl.glVertex3f(0.45f,0.65f,0.0f);//Punto8
gl.glEnd();
}

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_QUAD_STRIP;

Descripcin

Desactivacion de relleno mediante:


gl.glPolygonMode(GL2.GL_FRONT_AND_BACK, GL2.GL_LINE);

NOTA: Observe que el


orden de unin de los
vrtices en
QUAD_STRIP difiere
de la primitiva
QUADS

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_POLYGON;

Descripcin

Dibuja un polgono de CUALQUIER tantos lados como vrtices halla en el bloque;


@Override
publicvoiddisplay(GLAutoDrawableglad){
GL2gl=glad.getGL().getGL2();
gl.glClear(gl.GL_COLOR_BUFFER_BIT);

gl.glColor3f(0.0f,0.0f,1.0f);
//gl.glPolygonMode(GL2.GL_FRONT_AND_BACK,GL2.GL_LINE);

gl.glBegin(GL2.GL_POLYGON);

gl.glVertex3f(0.7500f,0.0000f,0.0f);//Punto1
gl.glVertex3f(0.5303f,0.5303f,0.0f);//Punto2
gl.glVertex3f(0.0000f,0.7500f,0.0f);//Punto3
gl.glVertex3f(0.5303f,0.5303f,0.0f);//Punto4
gl.glVertex3f(0.7500f,0.0000f,0.0f);//Punto5
gl.glVertex3f(0.5303f,0.5303f,0.0f);//Punto6
gl.glVertex3f(0.0000f,0.7500f,0.0f);//Punto7
gl.glVertex3f(0.5303f,0.5303f,0.0f);//Punto8
gl.glEnd();
}

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Mtodo: GL2.GL_POLYGON;

Descripcin

Desactivacion de relleno mediante:


gl.glPolygonMode(GL2.GL_FRONT_AND_BACK, GL2.GL_LINE);

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Practica 05. Identificando Uso de Primitivas

Descripcin

En una aplicacin de Java, y haciendo uso de las primitivas de OpenGL


aprendidas, recree las grficas que se muestran en la siguiente diapositiva.

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

Practica 05. Identificando Uso de Primitivas


Descripcin

Haciendo uso de las primitivas de OpenGL aprendidas, recree las grficas


siguientes en una aplicacin en Java.

Source: 3D Computer Mathematics A Mathematical Introduction to OpenGL

FIN

Potrebbero piacerti anche