Imagination PowerVR SDK Blog

Using pbuffer with OGLES 1.1 emulated library




I’m using the latest PVRVFrame libraries (version to test an OpenGLES 1.1 application on WinXP.

I’m trying and use egl pbuffer to do an off-screen rendering. The first oddity I see is that eglSwapBuffers() does affect my pbuffer surface, that is I can see it’s content displayed on the screen.
The documentation included in the package has the following paragraph concerning pbuffer support:
"- The eglCreatePbufferSurface function will create a separate context for each PBuffer surface
generated, this context will always be shared with the main window context. This behaviour is not
correct but was chosen due to compatibility issues with the supported pixel formats of the Desktop
OpenGL implementations. "

Does this imply that the pbuffer is actually implemented as a window surface? I would like a clarification on this point.

The real issue is the interaction with the Windows API; I’m creating the underlying Windows window without the VISIBILITY flag, in order to render to the pbuffer without having any visible window and just reading back the pbuffer content with glReadPixels(). This seems to impact the rendering though, without the VISIBILITY flag the pbuffer is uneffected by any GL command.
This makes me think of a pixel ownership problem; I would expect this to be an issue with a Window surface, not with a pbuffer surface, unless, as mentioned above, the actual implementation makes use of a Window surface anyway.

I hope I have explained my problem clearly enough.
Thanks for your support,




sorry for insisting and bringing this up again, but it’s quite important to me to have an answer on this topic. Can anybody tell me whether the problem I am seeing is a PVR emulator issue or not?
Please let me know if you need additional information.

Best regards,

p.s. = small amendment to the previous post: “VISIBILITY flag” should read “WS_VISIBLE flag”.



I'm sorry for sucha delay in responsing to your post. Could you tell us if the code you are writing is working fine on on OpenGL API? What I mean is if you can grab the data from pbuffer when use use OpenGL API not ES ?Â


jacekc2009-06-10 09:39:51


Hi Jacekc,

thanks for replying. The EGL implementation shipped with PVRVFrame is the version 1.3, the support for OpenGL is from version 1.4 (i.e., no EGL_OPENGL_BIT available).

Interestingly, I could build and run my test app using GL rather  than GLES, but still using OpenGL ES as client API (i.e., using EGL_OPENGL_ES_BIT).

The pbuffer issues were exactly the same as reported on the first post of this thread.




Thankns for response. What I want to know is if you can run your code on API GL + WGL

to see if mentioned issue appear. If in that case you will have a proper result then please send minimal test case on:

Best Regards,