p05 nelson primitivas_opengl
TRANSCRIPT
Practica 05Primitivas OpenGL
OBJETIVO: Conocer las Primitivas de dibujo básicas que posee OpenGL.
Descripción de Primitivas de OpenGL
Método Descripción
GL2.GL_POINTS Permite dibujar puntos de forma individual.
GL2.GL_LINES Para cada par de vértices en un bloque glBegin, glEnd, dibuja una línea.
GL2.GL_LINE_STRIP Para cada par de vértices consecutivos en un bloque glBegin, glEnd, dibuja una línea sólida.
GL2.GL_LINE_LOOP Igual que GL2.GL_LINE_STRIP, solo que también dibuja una línea entre el primer y último vértice.
GL2.GL_TRIANGLE Para cada grupo de 3 vértices en un bloque glBegin, glEnd, dibuja un TRIÁNGULO RELLENO.
GL2.GL_TRIANGLE_STRIP Para cada grupo de 3 vértices consecutivos dibuja un TRIÁNGULO RELLENO.
GL2.GL_TRIANGLE_FAN Dibuja triángulos entre el primer vértice, y cada pareja de vértices consecutivos del restro en un mismo bloque glBegin ... glEnd.
GL2.GL_QUADS Dibuja figuras cuadrangulares, por cada 4 vértices en un bloque glBegin, ... glEnd.
GL2.GL_POLYGON Dibuja polígonos convexos dado el conjunto de vértices dentro del bloque glBegin, ..., glEnd
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
Descripción de Primitivas de OpenGL
Método Descripción
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 método con los parámetros GL2.GL_FRONT_AND_BACK, GL2.GL_LINE, permite desactivar el modo de relleno de los polígonos, y sólo 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
Descripción de Primitivas de OpenGL
Método Descripción
Bloque de dibujo Bloque donde se indican los vértices con los cuales se van a trabajar en una primitiva específica.
gl.glBegin(PRIMITIVA); gl.glVertex3f(...); //coordenadas del vértice 1 gl.glVertex3f(...); //coordenadas del vértice 2 gl.glVertex3f(...); //coordenadas del vértice 3 ... gl.glVertex3f(...); //coordenadas del vértice ngl.glEnd();
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
Método: GL2.GL_POINTS;Descripción
Permite dibujar cada punto indicado en el bloque begin...end.
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
@Override public void display(GLAutoDrawable glad) { GL2 gl = glad.getGL().getGL2(); gl.glClear(gl.GL_COLOR_BUFFER_BIT);
gl.glColor3f(0.0f, 0.0f, 1.0f); gl.glPointSize(10f); gl.glBegin(GL2.GL_POINTS); gl.glVertex3f(0.5f, 0.5f, 0.0f); //Punto 1 gl.glVertex3f(0.5f, 0.5f, 0.0f); //Punto 2 gl.glVertex3f( 0.5f, 0.5f, 0.0f); //Punto 3 gl.glVertex3f( 0.5f, 0.5f, 0.0f); //Punto 4 gl.glEnd(); }
Cambia el tamaño (en pixeles) definido para los
puntos.
Método: GL2.GL_POINTS;Descripción
Los puntos aparecen de color azul, y con un tamaño de 10 pixeles. NOTA: Tanto los ejes, la malla, y las leyendas fueron añadidas con el propósito de mejorar la claridad del ejemplo.
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
Método: GL2.GL_LINES;Descripción
Permite dibujar una linea, por cada par de vértices en el bloque begin...end.
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
@Override public void display(GLAutoDrawable glad) { GL2 gl = glad.getGL().getGL2(); gl.glClear(gl.GL_COLOR_BUFFER_BIT);
gl.glColor3f(0.0f, 0.0f, 1.0f);
//... DIBUJA PUNTOS gl.glBegin(GL2.GL_LINES); gl.glVertex3f(0.5f, 0.5f, 0.0f); //Punto 1 gl.glVertex3f(0.5f, 0.5f, 0.0f); //Punto 2 gl.glVertex3f( 0.5f, 0.5f, 0.0f); //Punto 3 gl.glVertex3f( 0.5f, 0.5f, 0.0f); //Punto 4 gl.glEnd(); }
Línea 1
Línea 2
Método: GL2.GL_LINES;Descripción
Salida Esperada.
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
Método: GL2.GL_LINE_STRIP;Descripción
Permite dibujar linea, por cada par de vértices consecutivos en el bloque.
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
@Override public void display(GLAutoDrawable glad) { GL2 gl = glad.getGL().getGL2(); gl.glClear(gl.GL_COLOR_BUFFER_BIT);
gl.glColor3f(0.0f, 0.0f, 1.0f);
//... DIBUJA PUNTOS gl.glBegin(GL2.GL_LINE_STRIP); gl.glVertex3f(0.5f, 0.5f, 0.0f); //Punto 1 gl.glVertex3f(0.5f, 0.5f, 0.0f); //Punto 2 gl.glVertex3f( 0.5f, 0.5f, 0.0f); //Punto 3 gl.glVertex3f( 0.5f, 0.5f, 0.0f); //Punto 4 gl.glEnd(); }
Línea 1
Línea 3Línea 2
Método: GL2.GL_LINE_STRIP;Descripción
Salida Esperada.
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
Método: GL2.GL_LINE_LOOP;Descripción
Igual que GL2.GL_LINE_STRIP, solo que une el vértice final con el inicial.
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
@Override public void display(GLAutoDrawable glad) { GL2 gl = glad.getGL().getGL2(); gl.glClear(gl.GL_COLOR_BUFFER_BIT);
gl.glColor3f(0.0f, 0.0f, 1.0f);
//... DIBUJA PUNTOS gl.glBegin(GL2.GL_LINE_LOOP); gl.glVertex3f(0.5f, 0.5f, 0.0f); //Punto 1 gl.glVertex3f(0.5f, 0.5f, 0.0f); //Punto 2 gl.glVertex3f( 0.5f, 0.5f, 0.0f); //Punto 3 gl.glVertex3f( 0.5f, 0.5f, 0.0f); //Punto 4 gl.glEnd(); }
Línea 1
Línea 3
Línea 2
Línea 4
Método: GL2.GL_LINE_LOOP;Descripción
Salida Esperada.
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
Método: GL2.GL_TRIANGLES;Descripción
Dibuja un Triángulo, por cada 3 vértices del bloque glBegin()... glEnd();
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
@Override public void display(GLAutoDrawable glad) { GL2 gl = glad.getGL().getGL2(); gl.glClear(gl.GL_COLOR_BUFFER_BIT);
gl.glColor3f(0.0f, 0.0f, 1.0f);
//... DIBUJA PUNTOS
gl.glBegin(GL2.GL_TRIANGLES); gl.glVertex3f(0.5f, 0.5f, 0.0f); //Punto 1 gl.glVertex3f(0.2f, 0.4f, 0.0f); //Punto 2
gl.glVertex3f(0.4f, 0.2f, 0.0f); //Punto 3 gl.glVertex3f( 0.4f, 0.2f, 0.0f); //Punto 4 gl.glVertex3f( 0.5f, 0.5f, 0.0f); //Punto 5 gl.glVertex3f( 0.2f, 0.4f, 0.0f); //Punto 6
gl.glEnd(); }
Triángulo 1
Triángulo 2
Método: GL2.GL_TRIANGLES;Descripción
Relleno Activado (por default), o bien a través de la llamada a:gl.glPolygonMode(GL2.GL_FRONT_AND_BACK, GL2.GL_FILL);
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
Método: GL2.GL_TRIANGLES;Descripción
Desactivacion de relleno mediante:gl.glPolygonMode(GL2.GL_FRONT_AND_BACK, GL2.GL_LINE);
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
Método: GL2.GL_TRIANGLE_STRIP;Descripción
Dibuja un Triángulo, por cada 3 vértices consecutivos del bloque glBegin()... glEnd();
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
@Override public void display(GLAutoDrawable glad) { GL2 gl = 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); //Punto 1 gl.glVertex3f(0.2f, 0.4f, 0.0f); //Punto 2
gl.glVertex3f(0.4f, 0.2f, 0.0f); //Punto 3 gl.glVertex3f( 0.4f, 0.2f, 0.0f); //Punto 4 gl.glVertex3f( 0.5f, 0.5f, 0.0f); //Punto 5 gl.glVertex3f( 0.2f, 0.4f, 0.0f); //Punto 6
gl.glEnd(); }
Triángulo 1
Triángulo 3
Triángulo 2
Triángulo 4
Método: GL2.GL_TRIANGLE_STRIP;Descripción
Dibujo de triángulos usando TRIANGLE_STRIP, y con relleno desactivado.
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
Método: GL2.GL_TRIANGLE_FAN;Descripción
Dibuja Triángulos entre vértice 1, y cada pareja consecutiva en el bloque glBegin()... glEnd();
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
@Override public void display(GLAutoDrawable glad) { GL2 gl = 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_FAN); gl.glVertex3f( 0.0f, 0.0f, 0.0f); //Punto 1 gl.glVertex3f(0.8f, 0.0f, 0.0f); //Punto 2 gl.glVertex3f(0.5f, 0.4f, 0.0f); //Punto 3 gl.glVertex3f( 0.0f, 0.6f, 0.0f); //Punto 4 gl.glVertex3f( 0.4f, 0.4f, 0.0f); //Punto 5
gl.glVertex3f( 0.8f, 0.0f, 0.0f); //Punto 6gl.glEnd();
}
Pareja paraTriángulo 1
Pareja paraTriángulo 3
Pareja paraTriángulo 2
Pareja paraTriángulo 4
Vértice Común
Método: GL2.GL_TRIANGLE_FAN;Descripción
Uso de triángulo fan, con relleno desactivado.
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
Método: GL2.GL_QUADS;Descripción
Dibuja un polígonos de 4 lados, por cada 4 vértices del bloque glBegin()... glEnd();
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
@Override public void display(GLAutoDrawable glad) { GL2 gl = 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); //Punto 1
gl.glVertex3f(0.05f, 0.65f, 0.0f); //Punto 2 gl.glVertex3f(0.05f, 0.25f, 0.0f); //Punto 3
gl.glVertex3f(0.45f, 0.25f, 0.0f); //Punto 4 gl.glVertex3f(0.05f, 0.25f, 0.0f); //Punto 5 gl.glVertex3f(0.45f, 0.25f, 0.0f); //Punto 6 gl.glVertex3f(0.45f, 0.65f, 0.0f); //Punto 7 gl.glVertex3f(0.05f, 0.65f, 0.0f); //Punto 8
gl.glEnd(); }
Cuadro 1
Cuadro 2
Método: GL2.GL_QUADS;Descripción
Relleno Activado (por default), o bien a través de la llamada a:gl.glPolygonMode(GL2.GL_FRONT_AND_BACK, GL2.GL_FILL);
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
Método: GL2.GL_QUADS;Descripción
Desactivacion de relleno mediante:gl.glPolygonMode(GL2.GL_FRONT_AND_BACK, GL2.GL_LINE);
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
Método: GL2.GL_QUAD_STRIP;Descripción
Dibuja un polígono de 4 lados por cada par de PAREJAS DE VERTICES consecutivas;
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
@Override public void display(GLAutoDrawable glad) { GL2 gl = 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); //Punto 1 gl.glVertex3f(0.05f, 0.65f, 0.0f); //Punto 2 gl.glVertex3f(0.45f, 0.25f, 0.0f); //Punto 3 gl.glVertex3f(0.05f, 0.25f, 0.0f); //Punto 4 gl.glVertex3f(0.05f, 0.25f, 0.0f); //Punto 5 gl.glVertex3f(0.45f, 0.25f, 0.0f); //Punto 6 gl.glVertex3f(0.05f, 0.65f, 0.0f); //Punto 7 gl.glVertex3f(0.45f, 0.65f, 0.0f); //Punto 8
gl.glEnd(); }
Cuadro 1
Cuadro 3
Cuadro 2
Método: GL2.GL_QUAD_STRIP;Descripción
Desactivacion de relleno mediante:gl.glPolygonMode(GL2.GL_FRONT_AND_BACK, GL2.GL_LINE);
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
NOTA: Observe que el orden de unión de los
vértices en QUAD_STRIP difiere
de la primitiva QUADS
Método: GL2.GL_POLYGON;Descripción
Dibuja un polígono de CUALQUIER tantos lados como vértices halla en el bloque;
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
@Override public void display(GLAutoDrawable glad) { GL2 gl = 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); //Punto 1 gl.glVertex3f( 0.5303f, 0.5303f, 0.0f); //Punto 2 gl.glVertex3f( 0.0000f, 0.7500f, 0.0f); //Punto 3
gl.glVertex3f(0.5303f, 0.5303f, 0.0f); //Punto 4 gl.glVertex3f(0.7500f, 0.0000f, 0.0f); //Punto 5gl.glVertex3f(0.5303f, 0.5303f, 0.0f); //Punto 6
gl.glVertex3f( 0.0000f, 0.7500f, 0.0f); //Punto 7 gl.glVertex3f( 0.5303f, 0.5303f, 0.0f); //Punto 8
gl.glEnd(); }
Método: GL2.GL_POLYGON;Descripción
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
Descripción
En una aplicación de Java, y haciendo uso de las primitivas de OpenGL aprendidas, recree las gráficas que se muestran en la siguiente diapositiva.
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
Practica 05. Identificando Uso de Primitivas
Descripción
Haciendo uso de las primitivas de OpenGL aprendidas, recree las gráficas siguientes en una aplicación en Java.
Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL
FIN