Hi!
I want to draw graphics to the screen without using X11. The resolution is 1920x1080.
I want to try it with OpenGL, so I don't stress the CPU too.
I never used OpenGL, but i should be able to draw some rectangles and write some text
The real problem is getting the image to the screen without X11. Do you know a solution?
The second approach would be drawing to the framebuffer. As is know, drawing to a BufferedImage is really slow and uses a lot of CPU and RAM.
Another idea is to make the drawing with C. Writing to the framebuffer via Java actually requires a native lib. So why don't send the data from the java programm to the native lib and then visualize the data in C.
Is the first idea even possible? If not, second or third idea?
Thanks,
Rene8888
- ShiftPlusOne
- Raspberry Pi Engineer & Forum Moderator
- Posts: 6452
- Joined: Fri Jul 29, 2011 5:36 pm
Re: Graphics without X11
All of that is possible. Take a look at the source code examples in /opt/vc
You can use SDL, but the current version doesn't use the GPU. I am under the impression that sdl 3 does/will and I've seen patches to enable it in sdl 2. Take a look at openvg as well. There are lots of ways to go about this.
You can use SDL, but the current version doesn't use the GPU. I am under the impression that sdl 3 does/will and I've seen patches to enable it in sdl 2. Take a look at openvg as well. There are lots of ways to go about this.
Re: Graphics without X11
You can use JogAmp JOGL to access OpenGL ES 1 and OpenGL ES 2 from Java on the Pi.Rene8888 wrote:Hi!
I want to draw graphics to the screen without using X11. The resolution is 1920x1080.
I want to try it with OpenGL, so I don't stress the CPU too.
I never used OpenGL, but i should be able to draw some rectangles and write some text
The real problem is getting the image to the screen without X11. Do you know a solution?
JogAmp JOGL can initialize a screen with input without using X11 using the JOGL NEWT API, you also get a mouse-pointer!
The jogamp api is designed to make the opengl initialization identical on all platforms thus you can focus on the OpenGL code.
http://jogamp.org/
http://labb.zafena.se/?p=547 - i have posted a tutorial how to get started and getting OpenGL ES 2 running on the Pi using JogAmp back in the summer of 2012
http://www.raspberrypi.org/phpBB3/viewt ... 81&t=15466 - Java OpenGL ES 2 bindings using JogAmp JOGL 2

please ask if you have further questions
Xerxes Rånby @xranby I once had two, then I gave one away. Now both are in use every day!
twitter.com/xranby
twitter.com/xranby
Re: Graphics without X11
Thank you for your answers! I will try it with JogAmp first. It looks really promising 
And thank you for your help and quick answers!

And thank you for your help and quick answers!
Re: Graphics without X11
Since 3 hours I am trying to get a string rendered on the screen...
Is it possible to get graphics rendered on the screen with for example LWJGL? There I can use slick2d...
Is it possible to get graphics rendered on the screen with for example LWJGL? There I can use slick2d...
Re: Graphics without X11
I think the simplest way to achieve what you want, is to use the new Java 8. Its built-in JavaFX provides hardware-accelerated 2D and 3D graphics on all platforms, including the nice Pi. For the latter JavaFX uses OpenGL-ES without X11.Rene8888 wrote:I want to draw graphics to the screen without using X11. The resolution is 1920x1080.
I want to try it with OpenGL, so I don't stress the CPU too.
I never used OpenGL, but i should be able to draw some rectangles and write some text
Please see my recent short reference to Java 8 on the Pi here :
Re: The fasters way to get started with a 3D game
The Oracle Fx tutorial shows how simple it is to see results in no time. Extraordinary. And pure Java.
Having said this, there's always cases where you need pure OpenGL or OpenAL via Jogamp/Jogl. And I'm thankful for the good work from the teams behind it.
Last edited by Fidelius on Mon Mar 31, 2014 1:54 pm, edited 1 time in total.
Re: Graphics without X11
There exist a port of LWJGL for use on the Pi made by spsn. This LWJGL port still require X11 in order to handle input.Rene8888 wrote:Since 3 hours I am trying to get a string rendered on the screen...
Is it possible to get graphics rendered on the screen with for example LWJGL? There I can use slick2d...
http://www.raspberrypi.org/phpBB3/viewt ... p?p=211087
JogAmp JOGL is similar to LWJGL that you need to combine JogAmp with an OpenGL 3D engine or OpenGL utility classes, or your own engine in order to facilitate easy text rendering.
You can for example use JogAmp in combination with libGDX that contains its own "scene2d" UI toolkit, thus you can find a similar easy to use API compared to slick2d by using libgdx in combination with JogAmp JOGL on the Pi!
I have a branch of libgdx that uses JogAmp JOGL as a backend that you can try.
https://github.com/xranby/libgdx/tree/j ... gl-backend
http://forum.jogamp.org/JOGL-2-0-OpenGL ... 27689.html
Slick2D was not designed with OpenGL ES 2 in mind, its still unfixed
https://bitbucket.org/kevglass/slick/is ... 20-support
lika stated in that bugreport, you may combine Slick2D with libgdx in order to get slick2d applications running on OpenGL ES 2 devices. a possible solution are: slick2d -> Slick-AE -> libgdx -> jogaml jogl if you like to use the slick 2d API.
noxo experimented using jmonkeyengine 3 on the pi and got it running a year ago, here everything worked ok as long as you used the right textures, a limitation by the Pi GPU drivers. (ABGR texture are not supported by RPI's VideoCoreIV binary blob)
https://github.com/noxo/jmonkey-engine- ... d_renderer
Inside the JogAmp project we are working on a super fast way to render text by drawing all the curves using the GPU directly.
We call this GPU rendered UI toolkit "Graph", it is based on the patent free "Resolution Independent NURBS Curves Rendering using Programmable Graphics Pipeline" paper by Rami Santina. Graph work great on both desktop ( OpenGL 2, 3 and opengl 4 core) and mobile (tested on many android opengl es 2 & 3 devices, meego nokia n9). Last time I checked there was some issues using graph on the Pi due to some missing optional GLSL intrinsic function support by the Pi GPU drivers. that can be fixed now with the recently opensourced Pi GPU drivers!
http://forum.jogamp.org/Graph-UI-Teaser ... 31945.html
Xerxes Rånby @xranby I once had two, then I gave one away. Now both are in use every day!
twitter.com/xranby
twitter.com/xranby
Re: Graphics without X11
Thank you for your suggestions! I really appreciate it!
I want to try it with JavaFX first. Its the simplest and fastest approach. If I get really bad performance, there will be no other way then switching to OpenGL.
Thanks
I want to try it with JavaFX first. Its the simplest and fastest approach. If I get really bad performance, there will be no other way then switching to OpenGL.
Thanks
Re: Graphics without X11
Good luck with trying out.Rene8888 wrote:Thank you for your suggestions! I really appreciate it!
I want to try it with JavaFX first. Its the simplest and fastest approach. If I get really bad performance, there will be no other way then switching to OpenGL.
I'm still trying it out and it's good so far. Currently I'm exploring Fx's 3D API, but also its 2D performance is good. This is what you want to do: 2D, I suppose? Please see my little Rtype-like Pi-demo here, running @ 60 fps.
Java 8's Fx library uses a mixed 2D & 3D scenegraph, so all graphic operations are done with the same OpenGL-ES pipeline.
Re: Graphics without X11
Java8 now suports accelerated 3d on the Pi:
Guide to installing java8 on pi here:
http://helloraspberrypi.blogspot.co.uk/ ... lable.html
next install a 3d demo:
http://www.interactivemesh.org/models/jfx3dtuxcube.html
then run it as:
( the option "-Dcom.sun.javafx.experimental.embedded.3d=true" added to make it work on pi)

https://www.youtube.com/watch?v=bTBqI0RhOVw
That gets 24fps, and is also a good demo of the mouse control and GUI elements.
Guide to installing java8 on pi here:
http://helloraspberrypi.blogspot.co.uk/ ... lable.html
next install a 3d demo:
http://www.interactivemesh.org/models/jfx3dtuxcube.html
Code: Select all
wget http://www.interactivemesh.org/models/download/FXTuxCube0.7.1.zip
unzip FXTuxCube0.7.1.zip
Code: Select all
java -Xmx1024m -Dcom.sun.javafx.experimental.embedded.3d=true -Djavafx.animation.fullspeed=true -Dprism.dirtyopts=false -cp ./:jimObjModelImporterJFX.jar:fxTuxCube.jar org.interactivemesh.jfx.sample3d.tuxcube.FXTuxCube

https://www.youtube.com/watch?v=bTBqI0RhOVw
That gets 24fps, and is also a good demo of the mouse control and GUI elements.
Android app - Raspi Card Imager - download and image SD cards - No PC required !
Re: Graphics without X11
That's a nice video from Oracle, thanks for linking to it.mikerr wrote:Java8 now suports accelerated 3d on the Pi:
Guide to installing java8 on pi here:
http://helloraspberrypi.blogspot.co.uk/ ... lable.html
Those wanting to test Java 8 now next to Raspbian's Java 7 (until Raspbians comes with Java 8 pre-installed, as announced in other threads), i.e. without a full install, could also just download the JDK 8 tar-gz file from Oracle here (Linux ARM, 83 MB), and untar it to a place like /opt/jdk1.8.0/
And then either start java from there: /opt/jdk1.8.0/bin/java -jar program.jar
... or add to the end of file "/etc/profile" a line like this :
PATH=/opt/jdk1.8.0/bin:"$PATH"
Also don't miss the official JDK "Demos and Samples" which are downloadable on the above linked Oracle's JDK website.
Next to the general Ensemble8.jar demo, there's an interesting 3DViewer.jar which imports Wavefront and Maya 3d model files and then lets you explore the models on-screen, or also export them as JavaFx XML format files for direct use in own applications without the need of an importer. Very handy indeed.
On the bigger platforms this 3DViewer.jar has an open file dialogue to select the files to import, which however is missing in Java 8 on the Pi (as is the new Javafx sound-package), so you have to specify the model file as a parameter, like so:
Code: Select all
java -Dcom.sun.javafx.experimental.embedded.3d=true -jar 3DViewer.jar Yourmodel.obj