M0286_Libro Curso

Android

private long startTime;

private long fpsStartTime; private long numFrames; public void onSurfaceCreated(GL10 gl, EGLConfig config) { // ... startTime = System. currentTimeMillis (); fpsStartTime = startTime; numFrames = 0; } public void onDrawFrame(GL10 gl) { // Establecemos el angulo de rotacion en funcion del tiempo long elapsed = System. currentTimeMillis () - startTime; gl.glRotatef(elapsed * (30f / 1000f), 0, 1, 0); gl.glRotatef(elapsed * (15f / 1000f), 1, 0, 0); // Aqui dibujamos el modelo cube.draw(gl); } Así estamos girando el cubo cada vez que recorremos el bucle principal. Exactamente, 30 grados por segundo alrededor de “x” y 15 grados alrededor de “y”. Ahora vamos a aplicar una textura a nuestro cubo. El procedimiento para hacerlo es bastante extenso. No hay que preocuparse si no se entiende directamente. En la clase GLCube añadimos el siguiente código: private final IntBuffer mTextureBuffer ; public GLCube() { int texCoords[] = { // FRONT 0, one, one, one, 0, 0, one, 0, // BACK one, one, one, 0, 0, one, 0, 0, // LEFT one, one, one, 0, 0, one, 0, 0, // RIGHT one, one, one, 0, 0, one, 0, 0, // TOP one, 0, 0, 0, one, one, 0, one, // BOTTOM 0, 0, 0, one, one, 0, one, one, }; // ... ByteBuffer tbb = ByteBuffer. allocateDirect (texCoords.length * 4);

tbb.order(ByteOrder. nativeOrder ()); mTextureBuffer = tbb.asIntBuffer(); mTextureBuffer .put(texCoords); mTextureBuffer .position(0);

}

112

Made with FlippingBook - Online catalogs