GLField

La clase GLField le permite utilizar la biblioteca de OpenGL ES incluyendo el código que administra la configuración de EGL ™. GLField también proporciona compatibilidad integrada para actualizar la pantalla tras un número de fotogramas por segundo específico. Es la mejor opción para las aplicaciones de juegos y animación en 3D.

GLField es una clase abstracta. Debe ampliarla para crear un componente de IU que pueda añadir a una pantalla. Su subclase debe incluir a un constructor y omitir layout(), initialize() y render().

El constructor puede llamar al constructor de clase principal invocando super() y pasando a la versión de OpenGL ES que desee utilizar. En initialize(), puede escribir el código para realizar las tareas de configuración, como para configurar el color que desea utilizar para borrar la pantalla. En layout(), puede configurar el tamaño del campo.

Puede utilizar setTargetFrameRate() para crear un subproceso de representación que llama a render() al alcanzar el número de fotogramas por segundo especificado. No tiene que omitir update(), pero si lo hace, también llama a los fotogramas por segundo de destino. La representación iniciada por setTargetFrameRate() se ejecuta en el subproceso de eventos que haya creado al llamar a enterEventDispatcher(). Debería establecer un número de fotogramas por segundo de destino mediante setTargetFrameRate() en vez de deshabilitar manualmente las representaciones. Treinta fotogramas por segundo es generalmente el límite mínimo para obtener gráficos en tiempo real fluidos. Sesenta fotogramas por segundo es el límite máximo debido a la velocidad de actualización de LCD. Un mayor número de fotogramas por segundo consume más batería. Los fotogramas por segundo se puede pueden configurar de forma dinámica.

Si no especifica un número de fotogramas por segundo de destino, utiliza de manera predeterminada 0 y se llama a paint(), render() y update() desde el subproceso de evento estándar de IU en respuesta a invalidate(). Tenga en cuenta que se llama a initialize() cuando se pierde el contexto de EGL y se elimina el campo y se vuelve a añadir a la pantalla.

Ejemplo de código: implementación mínima de GLField

El siguiente ejemplo de código ofrece implementaciones sencillas para los métodos necesarios. Puede crear una clase MyGLField y añadirla a una pantalla.

import net.rim.device.api.opengles.GLField;
public class MyGLField extends GLField
 {
     public MyGLField(int ver)
     {
         super(ver);
     }
     protected void layout(int width, int height)
     {
         // Set field dimensions
         setExtent(100, 100);
     }
     protected void initialize(GL gl)
     {
         GL20 gl20 = (GL20)gl;
         gl20.glClearColor(0, 0, 0, 1);
     }
     protected void render(GL gl)
     {
         GL20 gl20 = (GL20)gl;
         gl20.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
     }
 }
Tema anterior: OpenGL ES

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