2010-01-17 14 views

risposta

4

Altri rispondenti sembrano presumere che "la grafica a schermo intero in Java" significhi necessariamente "un'implementazione funzionante di AWT". Questo, naturalmente, non è necessariamente vero, poiché è perfettamente possibile (alcuni direbbero anche desiderabile) utilizzare Java senza AWT.

Cairo è una libreria di rendering grafico 2D che può essere utilizzata da Java e può anche essere utilizzata senza X11. A prima vista sembra come se fosse possibile configurarlo per questo scenario. Dovrai configurarlo per usare il rendering OpenGL e fornire un'implementazione OpenGL non X11 adatta (ad esempio, MesaGL con il driver del dispositivo 'fbdev').

SDLJava è una porta Java della famosa libreria di sviluppo di giochi C SDL. Anche questo dovrebbe essere in grado di fare quello che chiedi, anche se non sembra essere stato aggiornato dal 2005, quindi se hai qualche problema con esso il supporto potrebbe non essere disponibile.

In alternativa, è possibile utilizzare sempre un codice C piuttosto semplice per aprire e configurare il framebuffer e quindi utilizzare JNI per restituire il framebuffer mappato in memoria come ByteBuffer in modalità diretta, in modo da poter disegnare direttamente.

5

La "grafica a schermo intero" è un po 'vaga.

Ad ogni modo, a quanto pare, è in corso uno sforzo per accedere al framebuffer da Java: Framebuffer Toolkit.

L'obiettivo di questo progetto è quello di produrre un corpo di codice che è un'implementazione pari framebuffer basato leggero per AWT e Swing. L'obiettivo di questo codice è rimuovere la dipendenza su X o altri livelli grafici in modo tale che la grafica possa essere reindirizzata a un framebuffer (ad esempio un buffer raw, VNC, ecc.). Questo esempio di implementazione preferirà soluzioni puramente Java, con punti di estensione pubblici disponibili per immettere le risorse native secondo necessità.

Vedere Project proposal: fbtoolkit.

1

Per visualizzare davvero qualcosa di grafico sullo schermo, sì. Bud c'è una versione headless del JRE per il solo fatto di eseguirlo. Non vedrai alcun output grafico, ma funzionerà. In alternativa, è possibile accedere in remoto e utilizzare l'inoltro X per eseguire il codice java sul server, ma lasciare che il client gestisca la visualizzazione della grafica.

+0

L'obiettivo dell'OP era utilizzare la grafica, non utilizzare la versione senza testa di JRE. –

1

Su un dispositivo incorporato, ad esempio un Raspberry Pi, se non si desidera passare attraverso X11 completo con Java AWT + Swing standard, questo progetto https://github.com/ttww/JavaFrameBuffer per scrivere direttamente nel buffer del frame sembra interessante.

Un'alternativa può essere l'uso, ad es. SWT su GTK, o Qt Jambi, per scrivere nel Frame Buffer (sia GTK che QT possono usare direttamente un FB senza X11).