OpenGL without a console session [WinNT]

Started by
5 comments, last by pcmaster 12 years, 6 months ago
Greetings!

I noticed that when I connect to an otherwise wonderfully functioning system via RDP and initialise an OpenGL 4.1 (but also lower) context, I get nothing. As if the card wasn't there. But when I query a DirectX 11 device context, everything seems fine and I get complete 3D acceleration. I don't need nor use any swap-chain in any case. May it be the case that I initialise OpenGL, HRC, HGLRC or something incorrectly or I'm missing something? It all (DX/GL/CL/...) works correctly as expected via a console session (when a local user is logged in and at least one display is connected) but only DX10/11 seem to work "over-network". Why??? :(
Advertisement
RDP doesn't use the video card in the machine; it's not designed for this kind of usage scenario.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

I know RDP doesn't use it. But how come DX10 can use it with no problems in all scenarios? Is it caused by the stupid Windows mechanism of GL context creation? We're not talking swap-chain here.
OpenGL will work over RDP. The problem is that the only OpenGL drivers available for it are the default Microsoft provided drivers (which I believe are OpenGL 1.1). I've never really managed to get it to work, but you could use something like Mesa 3D to emulate newer versions of OpenGL, but I don't believe they get anywhere near OpenGL 4.1.

DirectX usually has the ability to emulate features that aren't available through hardware. This comes at the cost of using the CPU to emulate the features, which typically is going to come with a heavy performance hit.

"I can't believe I'm defending logic to a turing machine." - Kent Woolworth [Other Space]


DirectX usually has the ability to emulate features that aren't available through hardware. This comes at the cost of using the CPU to emulate the features, which typically is going to come with a heavy performance hit.


I'm not sure you quite understood what I wrote. I've always been able to get COMPLETE DirectX11 acceleration with everything (tessellation, compute shaders, everything), no mather whether RDP or console. I can always query the device and context (without a swap-chain), no matter what scenario with DirectX11, it always works correctly. Any emulation is out of question (not only because I see I'm getting the same device with the same drivers and parameters and everything but also the performance with enormous loads is exactly the same).

So I was hoping somebody would tell my why this isn't the case with OpenGL. I do know that vendor drivers just hook into the OpenGL1.x dll from Microsoft and provide OpenGL (1.5, 2.x, 3.x, 4.x, extensions, whatever) functionality this way. Is there any reason why this shouldn't work without a console session?

I'm no expert on Windows drivers and administration so I don't see why the hook doesn't "kick-in" via RDP or telnet or whatver, too. I'm only assuming it's the creepy OpenGL context creation mechanism (which, for example, prevents us from initialising OpenGL easily in no-window scenarios). I wish I'm wrong.
Your title says WinNT and I think that WinNT doesn't support DirectX11. If you are talking about Vista or Windows 7, yes, it is possible that Microsoft have made changes to their RDP so that it runs DX in hardware but they haven't fixed their OpenGL.
You can try VNC. I've heard it works correctly but the free version only works on Win XP.
Sig: http://glhlib.sourceforge.net
an open source GLU replacement library. Much more modern than GLU.
float matrix[16], inverse_matrix[16];
glhLoadIdentityf2(matrix);
glhTranslatef2(matrix, 0.0, 0.0, 5.0);
glhRotateAboutXf2(matrix, angleInRadians);
glhScalef2(matrix, 1.0, 1.0, -1.0);
glhQuickInvertMatrixf2(matrix, inverse_matrix);
glUniformMatrix4fv(uniformLocation1, 1, FALSE, matrix);
glUniformMatrix4fv(uniformLocation2, 1, FALSE, inverse_matrix);
My bad, I'm sorry for the title. I wanted to rename it to WinNT 6.1 but I can't find a way to do it :-( Happened to me several times. So I'm dealing with Windows 7, of course.

Do you have any knowledge that VNC might log in a user into a console session, somehow? Which VNC? When running as a service, with no user logged in first, of course.

This topic is closed to new replies.

Advertisement