8
Practica 18 Buffer Z OBJETIVO: Aprender el uso y modo de empleo del Buffer Z para gráficos por computadora.

P18 nelson buffer_z

Embed Size (px)

Citation preview

Page 1: P18 nelson buffer_z

Practica 18Buffer Z

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

computadora.

Page 2: P18 nelson buffer_z

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

Page 3: P18 nelson buffer_z

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

Page 4: P18 nelson buffer_z

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

Page 5: P18 nelson buffer_z

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.

Page 6: P18 nelson buffer_z

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

Page 7: P18 nelson buffer_z

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.

Page 8: P18 nelson buffer_z

FIN