API de EGL - Interfaz gráfica de la plataforma nativa
Puede utilizar el paquete javax.microedition.khronos.egl para ofrecer enlaces para EGL™ 1.0 y 1.1 para la API de OpenGL® ES. Los contextos de representación compatibles proporcionan un contenedor para el estado de representación de OpenGL ES.
Las superficies de representación compatibles incluyen lo siguiente:
- Superficies de Windows: representación en pantalla
- Superficies de Pbuffer: representación fuera de la pantalla de los búferes de píxel
- Superficies de Pixmap: representación fuera de la pantalla de los búferes de clientes
La característica más utilizada de este paquete es la interfaz EGL10. Esta interfaz contiene los enlaces del lenguaje de programación para EGL 1.0.
Todos los dibujos de OpenGL ES, a excepción de las superficies de Pbuffer, deben ser precedidos por una llamada a eglWaitNative(EGL10.EGL_CORE_NATIVE_ENGINE, target) en la que el destino es un objeto que describe el destino de representación. A esto le debe seguir una llamada a eglWaitGL(). Al dibujar una imagen, no se garantiza que los resultados aparezcan en los píxeles de la imagen hasta que eglWaitGL() haya vuelto.
Las superficies de Pbuffer se crean mediante EGL10.eglCreatePbufferSurface() y son accesibles sólo desde las API basadas en EGL.
Ejemplo de código: representación de un único fotograma mediante EGL10
private void render()
{
if (!egl.eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext))
{
int error = egl.eglGetError();
if ( error == EGL11.EGL_CONTEXT_LOST )
handleContextLost();
else
handleError("eglMakeCurrent failed: " + error);
}
// Signal that we're about to begin GL rendering
egl.eglWaitNative(EGL10.EGL_CORE_NATIVE_ENGINE, graphics);
// Check for a viewport change
if (vpWidth != getWidth() || vpHeight != getHeight())
{
vpWidth = getWidth();
vpHeight = getHeight();
renderer.sizeChanged(gl, vpWidth, vpHeight);
}
renderer.render(gl);
// Signal that we're finish GL rendering
egl.eglWaitGL();
}
¿Le ha resultado útil esta información? Envíenos sus comentarios.