OpenGL Rendering Issue on Remote Desktop

I am using OpenGL 1.1 for rendering. On local machine it works fine but when I remote desktop I see a couple of issue -

  1. initially the drawing window is black and blank , i have to resize it a little bit to render something on it.
  2. My application has three different opengl windows and hence 3 contexts. On one of the window the rendering is correct, but on the other two objects further away from the camera are visible instead of object close to camera. It seems depth test is failing since they are showing up in the order of drawing.
    I get the same effect when I turn off hardware acceleration of the monitor.
    I understand that windows turns off hardware acceleration on remote desktops. Is there a work around for this ?
    Why does turning off hardware acceleration messes up the depth test and repainting of window

I have attached two screenshots - 1. How the rendering should look. 2.How they look in two windows with no hardware acceleration.

Do you explicitly request a 24 bits depth buffer ?
Otherwise one GL implementation may give you 16 bits, and another one 24 bits.

Remote Desktop won’t give you hardware acceleration for a number of reasons, with one of the important ones being that you may be connecting to a machine that doesn’t have a monitor, or even to one that doesn’t have a video card.

It also needs to be bandwidth-efficient so you’re not going to be getting screen updates going across the wire; instead you’ll be getting GDI commands (or equivalent) and some data which your RDP client will then interpret and use to draw locally.

In other words it’s not a good tool for this particular job. It’s intended target audience is really server admins rather than developers troubleshooting apps. So you’ll be better off looking for a different tool.

As a workaround for remote debugging of CUDA-based applications and GLSL-driven rendering, I use TeamViewer, which is free for non-commercial use and very easy to setup. The openGL application runs “remote controlled” on the client (with all the hardware acceleration and such) and the content of the screen is transferred to your local machine.