1. Do you want a transparent framebuffer and setting attribute in Ultibo doesn't work?
You can also add
then in Ultibo framebuffer creating code mode=0 and your framebuffer is transparent now. (and you can see a black screen until you put something non-zero to alpha channel in your colors)
2. What can be a transparent framebuffer for?
You can display OpenGL (or OpenMax or OpenVG or anything) screen under it
Normally it is over the framebuffer, so how to put it under?
The answer is: the framebuffer is an DispmanX layer #-128
Set your OpenGL layer at lower number (-129 for example) and it will go under your framebuffer.
3. Have your OpenGL picture cover the full screen and have it to stay forever at the place you put it at the start?
Of course, not.
You can declare any destination rectangle for your openGL layer and you can change it at the runtime
You simply change your layer parameters in the main rendering loop before calling opengl calls
Code: Select all
vc_dispmanx_rect_set(@Dst_Rect,frames mod 540,frames mod 540,960,540);
vc_dispmanx_rect_set(@src_Rect,0,0,960 shl 16,540 shl 16);
The example moves OpenGL window diagonal, one pixel every frame and restarts from 0 every 540 frames - the code is written for fullhd screen and the opengl rectangle was set at 960x540
Beware: don't allow your DispmanX layer to reach under your screen! or you will see a strange behavior
Use update_submit without sync. The sync will be done by eglswapbuffers.