M0286_Libro Curso

2: Avanzado en Android

GLRenderer implementa la interfaz GLSurfaceView.Renderer, la cual tiene tres métodos: onSurfaceCreated(), onSurfaceChanged() y onDrawFrame(). El primero de ellos, onSurfaceCreated , se llama cuando la Surface (parecido al Canvas del 2D) OpenGL se crea y vuelve a crear: public void onSurfaceCreated(GL10 gl, EGLConfig config) { // Definimos todas las opciones OpenGL que necesitemos gl.glEnable(GL10. GL_DEPTH_TEST ); gl.glDepthFunc(GL10. GL_LEQUAL ); gl.glEnableClientState(GL10. GL_VERTEX_ARRAY ); // Optional: desactivamos dither para mejora rendimiento // gl.glDisable(GL10.GL_DITHER); } En este método hemos definido de momento un par de opciones OpenGL. Esto lo realizamos con glEnable() y glDisable() . Las opciones más utilizadas son las siguientes: ■ GL_BLEND : mezcla valores del color entrante con los que ya están en el buffer de color. ■ GL_CULL_FACE : ignora polígonos en función de su ondulación (que puede ser en el sentido de las manetas del reloj o en sentido contrario) en coordenadas de ventana. Es una manera fácil de eliminar caras traseras. ■ GL_DEPTH_TEST : realiza comparaciones y actualiza el buffer de profundidad. Se ignoran píxeles que están más alejados de los ya dibujados. ■ GL_LIGHTi : incluye el número de la luz ’i’ cuando se va a interpretar el color y el brillo de un objeto. ■ GL_LIGHTING : activa cálculos de iluminación y material. ■ GL_LINE_SMOOTH : dibuja líneas suavizadas. ■ GL_MULTISAMPLE : es el que realiza un muestreo múltiple para suavizar líneas y dar otros efectos. ■ GL_POINT_SMOOTH : dibuja puntos suavizados. ■ GL_TEXTURE_2D : dibuja superficies utilizando texturas. Por defecto, todas estas opciones están desactivadas, excepto GL_DITCHER y GL_ MULTISAMPLE. Debemos tener presente, que todo lo que se active, posteriormente repercutirá en el rendimiento.

105

Made with FlippingBook - Online catalogs