P18 nelson buffer_z

Preview:

Citation preview

Practica 18Buffer Z

OBJETIVO: Aprender el uso y modo de empleo del Buffer Z para gráficos por

computadora.

Conceptos

Concepto: Buffer Z

Definición: El BUFFER Z, o el buffer de profundidad es la parte de la memoria de nuestra tarjeta gráfica encargada de la visibilidad de nuestros gráficos 3D según las coordenadas de sus pixeles, con lo que se puede gestionar qué elementos de una escena renderizada son visibles y cuales permanecerán ocultos según sus posiciones en el eje Z ( distancia a cámara ).

Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL

Métodos:Cómo activar el Buffer Z

Comando: gl.glEnable(GL2.GL_DEPTH_TEST);

Descripción: Método empleado para activar capacidades de OpenGL durante el renderizado de las imágenes. La constante GL2.GL_DEPTH_TEST define que se va a activar el Buffer Z, o Buffer de Profundidad. El comando deberá ser invocado en init una vez que se halla activado el modo matriz MODELO-VISTA (es decir, después de la llamada a [gl.glMatrixMode(GL2.GL_MODELVIEW)].

Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL

Ejemplo de Graficación sin Buffer-Z

Descripción

1. Usando el modo de proyección perspectiva, cree una aplicación en Java que dibuje los 2 triángulos siguientes, con el color especificado.

Triángulo 1 (Rojo): Vértice 1: (-2, -1, 0) Vértice 2: ( 2, -1, 0) Vértice 3: ( 0, 2, 0) Triángulo 2 (Verde): Vértice 1: (-1, -0.5, -1) Vértice 2: ( 1, -0.5, -1) Vértice 3: ( 0, 1.0, -1)

Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL

Ejemplo de Graficación sin Buffer-ZDescripción

2. El resultado obtenido será similar al siguiente:

Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL

OBSERVE que el triángulo verde se puede ver, sin embargo, de

acuerdo a su coordenada en Z se debería ocultar por el triángulo

rojo.

Esto ocurre, porque el triángulo verde se dibujó después del

rojo, y el Buffer-Z no está activado.

Ejemplo de Graficación sin Buffer-Z

Descripción

3. Para activar el Buffer-Z, agregue el comando [gl.glEnable(GL2.GL_DEPTH_TEST);], en la función init después de haber invocado a la función [gl.glMatrixMode(GL2.GL_MODELVIEW);].

4. Finalmente, modifique la llamada [gl.glClear(gl.GL_COLOR_BUFFER_BIT );] por la siguiente:

 gl.glClear(gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT); y con esto estará empleando el Buffer-Z.

5. Vuelva a ejecutar su aplicación, y observe el nuevo resultado.

Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL

Ejemplo de Graficación con Buffer-ZDescripción

6. El resultado obtenido será similar al siguiente:

Source: 3D Computer Mathematics – A Mathematical Introduction to OpenGL

OBSERVE que ahora el triángulo verde ya no se puede ver, puesto

que el Buffer-Z administra la visibilidad de los objetos de

acuerdo a su posición.

FIN