M0286_Libro Curso

2: Avanzado en Android

Vamos a dibujar algo. Realizamos llamadas una y otra vez al método onDrawFrame() en el hilo de renderizado creado por la clase GLSurfaceView . public void onDrawFrame(GL10 gl) { // ... // limpia la pantalla y la pone en negro gl.glClear(GL10. GL_COLOR_BUFFER_BIT | GL10. GL_DEPTH_ BUFFER_BIT ); // Posiciona el modelo para que lo podamos ver gl.glMatrixMode(GL10. GL_MODELVIEW ); gl.glLoadIdentity(); gl.glTranslatef(0, 0, -3.0f); // otros comandos de dibujo irán aquí... } Con esto coloreamos la pantalla en negro, limpiamos el buffer de profundidad y de color. Tendremos que realizar esto si no queremos obtener resultados extraños procedentes de la información de profundidad de un fotograma anterior. También hemos definido la posición inicial para el resto de comandos de dibujo, que iremos completando más adelante. Si ejecutamos en este momento la aplicación, lo único que se verá es la pantalla en negro una y otra vez en bucle. Ahora sí que vamos a realizar algo más interesante. Lo primero vamos a definir el modelo. Para ello debemos tener en cuenta, que dependiendo de la complejidad de los objetos que se quieran dibujar, lo recomendable es crearlo utilizando alguna herramienta de diseño gráfico e importarlo. Para este ejemplo lo haremos definiendo un modelo sencillo: un cubo . Para ello debemos crear la clase GLCube e insertar el siguiente código: package com.seas.ejemplo.opengl;

import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.IntBuffer; import javax.microedition.khronos.opengles.GL10;

import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.opengl.GLUtils; class GLCube { private final IntBuffer mVertexBuffer ;

107

Made with FlippingBook - Online catalogs