Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Books that are invaluable
#1
If you are working on SBC's you are really working on OpenGLES2.0 or OpenGLES3.x 

In which case you really need a copy of the so called gold book, (dunno why, it only has a hint of gold on it). It comes in 2 versions, the older and slightly harder to find new, 2.0 version
https://www.amazon.com/OpenGL-ES-2-0-Pro...dpSrc=srch

And the more uptodate (but still lacking 3.1/.3.2 info) OpenGLES3.0 version
https://www.amazon.com/OpenGL-ES-3-0-Pro...55JZ7GP90X


Both books are reference books so don't expect much in the way of easy to follow handholding, but if you've started to grasp OpenGLES the info it provides helps to fill in a lot of blanks. 

I am not a fan of downloading reference books like this you should always keep them to hand, but there are some good download references you should book mark, such as the references cards from Khronos.

Reference cards for ES2 are here
https://www.khronos.org/opengles/sdk/doc...e-card.pdf

and for ES3.0
https://www.khronos.org/files/opengles3-...e-card.pdf
and for ES3.1
https://www.khronos.org/files/opengles31...e-card.pdf
and for ES3.2
https://www.khronos.org/files/opengles32...e-card.pdf

OpenGLES3.0 is quite a bit different from 2.0 and requires a different way of doing things, so if you are developing for it, the later gold book is essential.

Not too many SBC's currently support 3.1 or 3.2. There's currently no gold book on 3.1 or 3.2 so you need to go to the Khronos site to get info on how to use it, it is essentially closer to full OpenGL3.3+ these days so any good OpenGL book (the Blue or Red books) will prepare you for using modern GPU's on your SBC.
Brian Beuken
Lecturer in Game Programming at Breda University of Applied Sciences.
Author of The Fundamentals of C/C++ Game Programming: Using Target-based Development on SBC's 



Reply
#2
The Khronos reference cards are a great source for all functions you need to know about. I've personally got the GLES2.0 one laminated in my bookshelf for if I may need it.


If you'd need more information on a specific function however I'd also suggest looking it up on docs.gl.

docs.gl provides a good description, gives more information on the parameters of the function and usually has Errors and example code that may come in handy.
----
Kind Regards,

Thijs van Boesschoten

Student game programmer at
NHTV Breda(Breda University of Applied Sciences)


E-mail me
Reply
#3
The whole http://www.opengl-tutorial.org/ is amazing and useful, but not very OpenGLES specific, if you are doing ES3.x then almost everything there is relevant except the way you open windows since ES3.x is basically a subset of OpenGL3.3 as supported by the site.

However..If you are doing GLES2.0 hold back from that site until you are comfortable enough to make adaptations to your code for ES2.0 specifics/limits.
Brian Beuken
Lecturer in Game Programming at Breda University of Applied Sciences.
Author of The Fundamentals of C/C++ Game Programming: Using Target-based Development on SBC's 



Reply
#4
I'm not sure if this is the right place to post this or not. 

I've downloaded the code for "OpenGL ES 2.0 Programming Guide" and am able to build the examples both locally on a Beaglebone as well as through Eclipse, but when I try to run the program from a "ssh -XC" session from an Ubuntu system i get a window that briefly pops up with the are between the frame Transparent and I get the following error:

X Error of failed request:  BadRequest (invalid request code or no such operation)

  Major opcode of failed request:  153 ()
  Minor opcode of failed request:  1
  Serial number of failed request:  20
  Current serial number in output stream:  2

I see this from 2 separate systems; a desktop and a laptop each running Ubuntu 16.04 LTS.

I'm able to run 'glxinfo; and 'glxgears' from the remote ssh session, but the OpenGL ES example from the Gold book does not run.
Reply
#5
I'm not sure the beaglebone is the best thing to try on, see if you can get the code to run on a raspberry (but remember the EGL setup is different).

I've failed several times to get anything on the beaglebone black myself, though I use VGDB as you know, which makes it a bit easier to control. I usually get Xserver errors, or failure to initialise EGL, so not really to sure what to make of your errors.
Brian Beuken
Lecturer in Game Programming at Breda University of Applied Sciences.
Author of The Fundamentals of C/C++ Game Programming: Using Target-based Development on SBC's 



Reply
#6
The same code builds and run on a Raspberry Pi locally via HDMI Monitor, but does not display remotely using ssh. This might be due to the monitor being connected. Also, this did require installing 'libgles2-mesa-dev' on the Pi to work. Also, I am currently using a B+ which is quite slow. I'll have to try with a Pi 3 or Pi 3 B+ and see if the performance is better. The Beaglebone does perform better than the B+.

The other thing is that I am using a Beaglebone Blue headless since it does not have a HDMI out connection. i have been able to get an SDL example and QT to run remotely via ssh on the Beaglebone as well as 'glxgears' but no luck thus far with the gold book code. It does seem to run locally via a remote desktop connection.
Reply
#7
you seem to like making life hard Big Grin
Brian Beuken
Lecturer in Game Programming at Breda University of Applied Sciences.
Author of The Fundamentals of C/C++ Game Programming: Using Target-based Development on SBC's 



Reply
#8
Yeah, I don't know easy. 

I'm curious, when you test your code on the other boards, such as the Beaglebone or ODRIOD, what are you using to do so.  Are you compiling the same code for all boards?  The code from your book seems to be specific for the Raspberry Pi.
Reply
#9
the book code is indeed mostly for the raspberry, but its a simple change, and there is a test project on the site for multiple formats, which are easy to configure for different systems and act as an example for those with other boards like the XU4

Its usually, a case of using an X11 display rather than bcm, and changing some of the user libs, once thats done the code builds and runs 90% of the time on any target. I do have to make sure the target has GLES2.0 libs and X11.

One or 2 boards just don't play ball, due to old linux and no drivers, they tend to be end of life systems though.. but anything that has a driver or can be emulated with mesa, will usually be ok.
Brian Beuken
Lecturer in Game Programming at Breda University of Applied Sciences.
Author of The Fundamentals of C/C++ Game Programming: Using Target-based Development on SBC's 



Reply
#10
Cool.

I'm using the code from Dan Ginsburg github for the OpenGL ES 2.0 Programming Guide which I have been able to build and run on both the Raspberry Pi and Beaglebone Black as well as cross compile for the BBB.
https://github.com/danginsburg/opengles-book-samples

I've given up on the Beaglebone Blue for OpenGL ES since it does not have a proper HDMI connection. I'm still going to work with QT and perhaps QT with OpenGL ES for a LCD display.

I'll have to look porting the code from your Fundamentals book to the Beaglebone and the code you mentioned as a download.

Thanks
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)