2010-01-17 37 views

Respuesta

4

Otros respondedores parecen suponer que "gráficos de pantalla completa en Java" significa necesariamente "una implementación en funcionamiento de AWT". Esto, por supuesto, no es necesariamente cierto, ya que es perfectamente posible (algunos incluso dirían deseable) usar Java sin AWT.

Cairo es una biblioteca de renderizado de gráficos en 2D que se puede usar desde Java y también se puede usar sin X11. A primera vista, parece que debería ser posible configurarlo para este escenario. Tendrá que configurarlo para usar la representación de OpenGL, y proporcionar una implementación OpenGL no compatible con X11 (por ejemplo, MesaGL con el controlador de dispositivo 'fbdev').

SDLJava es un puerto de Java de la popular biblioteca de desarrollo de juegos C SDL. Esto también debería poder hacer lo que usted solicita, aunque parece que no se ha actualizado desde 2005, por lo que si tiene algún problema, es posible que no se reciba asistencia.

Como alternativa, siempre puede usar un código C bastante simple para abrir y configurar el framebuffer, y luego usar JNI para devolver el framebuffer mapeado en memoria como un ByteBuffer de modo directo, para que pueda dibujar directamente en él.

5

Bueno "gráficos de pantalla completa" es un poco vago.

De todos modos, aparentemente hay un esfuerzo en curso para acceder al framebuffer desde Java: Framebuffer Toolkit.

El objetivo de este proyecto es producir un cuerpo de código que es una implementación pares en el uso de este dispositivo ligero para AWT y Swing. El objetivo de este código es eliminar la dependencia de X o otras capas de gráficos, de modo que los gráficos puedan ser redirigidos a un framebuffer (por ejemplo, un buffer en bruto, VNC, etc.). Esta implementación del ejemplo preferirá las soluciones de Java puro, con los puntos de extensión públicos disponibles para ingresar recursos nativos según sea necesario.

Ver Project proposal: fbtoolkit.

1

Para mostrar realmente algo gráfico en la pantalla, sí. Bud hay una versión sin cabeza del JRE para simplemente ejecutarlo. No verá ningún resultado gráfico, pero se ejecutará. Como alternativa, puede iniciar sesión de forma remota y usar el reenvío X para ejecutar el código java en el servidor, pero deje que el cliente maneje la visualización de los gráficos.

+0

El objetivo del OP era utilizar gráficos, no usar la versión sin cabeza del JRE. –

1

En un dispositivo incrustado, como Raspberry Pi, si no desea pasar por X11 completo con Java AWT + Swing estándar, entonces este proyecto https://github.com/ttww/JavaFrameBuffer de escribir directamente en el búfer de cuadros parece interesante.

Una alternativa puede ser usar, p. SWT en GTK, o Qt Jambi, para escribir en Frame Buffer (tanto GTK como QT pueden usar directamente un FB sin X11).