View Full Version : Create pbuffer without getting gl driver from window.

ben harper
06-09-2004, 12:24 PM
Is there any way that I can get the system to load a GL driver that is bound only to a pbuffer? I need to do offscreen GL rendering to a pbuffer, and this rendering must be controllable through XP's remote desktop. As I understand it, the only way to load the GL driver is to create a context (wglCreateContext) on a Windows HWND. However, since the remote desktop runs on an emulated graphics driver my app loads the MS Generic GL, instead of whatever is available for the card inside the pc. Is there any way of circumventing the need for the 'boot' HWND, so that I can get a pbuffer on the most appropriate driver?


06-10-2004, 04:31 AM
I have tried to do just about the same thing as you have for quite some time.

It would be nice to work with acceleration across RDP, but there is no way to create a PBuffer without a surrogate GL context. RDP does not allow accessing the display hardware drivers, so you will always get the generic software OpenGL implementation. Since the MS software GL doesn't support either the ARB or the EXT PBuffer extension, you cannot create a PBuffer.

I'm still looking for a solution, but I'm having to get pretty low level :p

Sorry for the bad news.



ben harper
06-10-2004, 05:13 AM

06-11-2004, 10:40 AM
Whoops, I guess i didn't read carefully enough ... I pretty much just repeated what you said.

Sorry for that.

I've tried to circumvent this limitation in a number of ways. So far I have been unsuccessful. :(

It seems like XP treats RDP like a special video device and doesn't use any of the hardware drivers in that context. Notice that vendor control panels don't work over RDP. However the drivers are still active (the local display still works and displays a login prompt). I haven't found that it is possible to access the display hardware with highlevel API.

BUT, I did think of a somewhat round about solution for controlling accelerated rendering over RDP just today.

I noticed that programs running under one user account still can access the hardware while another user logs in over RDP. I'm going to try using either RPC or sockets to create a client/server pair across users. This way i can render with acceleration on the server half and then transfer the images to the client displaying over RDP.

Hope this is a bit more helpful than the last post.