M0286_Libro Curso
Android
gl.glColor4f(1, 1, 1, 1); gl.glNormal3f(0, 1, 0); gl.glDrawArrays(GL10. GL_TRIANGLE_STRIP , 16, 4); gl.glNormal3f(0, -1, 0); gl.glDrawArrays(GL10. GL_TRIANGLE_STRIP , 20, 4); } static void loadTexture(GL10 gl, Context context, int resource) { Bitmap bmp = BitmapFactory. decodeResource ( context.getResources(), resource); GLUtils. texImage2D (GL10. GL_TEXTURE_2D , 0, bmp, 0); gl.glTexParameterx(GL10. GL_TEXTURE_2D , GL10. GL_TEXTURE_MIN_FILTER , GL10. GL_LINEAR ); gl.glTexParameterx(GL10. GL_TEXTURE_2D , GL10. GL_TEXTURE_MAG_FILTER , GL10. GL_LINEAR ); bmp.recycle(); } } La matriz vértices ( int vertices[] ) define las esquinas del cubo en coordenadas de modelo de punto fijo. Cada cara del cubo es un cuadrado que está formado por dos triángulos. Hemos utilizado el modo habitual que usa OpenGL para dibujar, llamado “ triangle strips ” (triángulos adyacentes). En este modo, lo que hacemos es especificar dos puntos iniciales y, a continuación, cada punto subsecuente define un triángulo con los dos puntos anteriores. Hay que tener en cuenta, que cada punto va a tener tres coordenadas (x, y, z). Los ejes “x-“ e “y-“ apuntan hacia la derecha y hacia arriba, y el eje “z-“ apuntará hacia la pantalla en línea con el punto de vista. En el método draw() , estamos utilizando el buffer de vértice que hemos creado en el constructor y dibujamos seis rondas distintas de triángulos (una para cada cara del cubo). Veamos ahora la nueva clase en GLRenderer : private final GLCube cube = new GLCube(); public void onDrawFrame(GL10 gl) { // ... // Aqui dibujamos el modelo cube .draw(gl); } Si ejecutamos nuestra aplicación, veremos una pantalla en negro con un cuadrado en el centro.
110
Made with FlippingBook - Online catalogs