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();
}
Tema siguiente: Configuración de EGL
Tema anterior: Paquetes JSR 239

¿Le ha resultado útil esta información? Envíenos sus comentarios.