Remote Desktop


What’s the deal with OpenGL applications in a Remote Desktop session? I’ve understood that it doesn’t always work that good. I’ve read somewhere that the only stuff that works are OpenGL 1.1, is that true?

Remote desktops open up another desktop which isn’t attached to a DISPLAY. Only desktops attached to a display can be HW accelerated by OpenGL installable client drivers.

Check the possible DISPLAY_DEVICEs you can get with the Win32 API EnumDisplayDevices()
Remote desktops are mirroring devices.

You can use RealVNC or similar to get a real OpenGL context remotely. RemoteDesktop only offers the “Generic GDI” context as you suspected. I typically only RD to start the VNC server…

I’m also looking for help with an OpenGL application running on a Windows machine that I’m connecting to via Remote Desktop.

In my case, sprites are not working.

The remote computer has a good graphics card but apparently it is ignored and software rendering is used. I guess that means it uses Microsoft’s OpenGL implementation which, I understand, only supports OpenGL 1.1.

This thread indicates that VirtualGL solved a similar problem for someone, but that was on unix. Is there anything like that for Windows so I could do hardware rendering on the remote machine?

I’ve used GLIntercept for debugging. It intercepts GL calls and logs them to a file so you can examine them. It has you copy it’s OpenGL32.dll into your application folder. Is there a version of OpenGL32.dll that supports OpenGL 2.1 that I could put in my application folder? For example, is there an open source group that is picking up where Microsoft left off? That would be software rendering but at least it would include the features I need.

If I sound like a newbie, I am.

Mesa3d supports software rendering up to version 2.1. if compiled with DEBUG define it also logs errors. you should read what it supports and what not, f.e. GLSL is supported but no fully.

You can do that with Mesa3D : current version is 7.2, and support OpenGL 2.1 in a complete software implementation.
Compile or find a windows mesa .dll, and put it as opengl32.dll on your exe folder.

EDIT: too slow :slight_smile: