Game Development Reference
In-Depth Information
w = mWidth;
h = mHeight;
mSizeChanged = false;
}
if (needStart) {
mEglHelper.start(configSpec);
tellRendererSurfaceCreated = true;
changed = true;
}
if (changed) {
// Create the surface
gl = (GL10) mEglHelper.createSurface(mHolder);
tellRendererSurfaceChanged = true;
}
if (tellRendererSurfaceCreated) {
mRenderer.surfaceCreated(gl);
tellRendererSurfaceCreated = false;
}
if (tellRendererSurfaceChanged) {
mRenderer.sizeChanged(gl, w, h);
tellRendererSurfaceChanged = false;
}
if ((w > 0) && (h > 0)) {
/* draw a frame here */
mRenderer.drawFrame(gl);
// Call swapBuffers() to instruct the system to display
mEglHelper.swap();
}
}
// Clean up...
mEglHelper.finish();
}
// …
private static final Semaphore sEglSemaphore = new Semaphore(1);
private EglHelper mEglHelper;
}
Cube Renderer
CubeRenderer is the class that renders the pair of tumbling cubes (see Listing 5-5). It implements the
Renderer interface and does some very interesting things.
The void drawFrame(GL10 gl) method does the actual drawing and gets called many times per
second. The method starts by setting the matrix mode to GL_MODELVIEW . This essentially says to render
things in a 3D perspective (model view). Next, it clears all screen buffers by calling glLoadIdentity() .
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
Search WWH ::




Custom Search