Fullscreen OpenGL in windows 7

Any feature you'd like to see in Ultr@VNC? Just propose it here.

Fullscreen OpenGL in windows 7

Postby jonathandb » 2010-05-30 11:27

Hello,

I want to remote controll a fullscreen opengl game under windows 7.

I have tested different VNC servers (tightVNC, tigerVNC, RealVNC, TeamViewer) but none of them renders the openGL. The UltraVNC server capture the frame, but only refreshes when there is a GDI window on top. Could you implement a function where the capturing happens time based instead of polling?

I have some programming experience, but not in c++ :(

Low fps is no problem.
jonathandb
 
Posts: 3
Joined: 2010-05-28 16:48

Re: Fullscreen OpenGL in windows 7

Postby B » 2010-06-01 15:00

A workaround - why not just keep refreshing the screen? There's usually a hotkey for it. I have to do that a lot when using TightVNC to Macs.
B
Super-Mod
Super-Mod
 
Posts: 2347
Joined: 2009-09-09 14:05

Re: Fullscreen OpenGL in windows 7

Postby jonathandb » 2010-06-02 09:27

My knowledge of C++ is very limited, but I know c# and java.

I'm editing the vncDesktop::FastDetectChanges function, used by Poll Full Screen to find the changed region:

Code: Select all
HWND hDeskWnd = GetDesktopWindow();
HWND hwnd = GetDesktopWindow();
//HWND hwnd = WindowFromPoint(point);


I have changed the active window to the desktop. That way it should always poll the whole screen. Looking at the traffic (it's higher), it seems to update the whole screen. But it still doesn't update in fullscreen opengl.

Can someone point me the right way? I have the impression I'm looking at the wrong things.
Last edited by jonathandb on 2010-06-02 09:29, edited 3 times in total.
jonathandb
 
Posts: 3
Joined: 2010-05-28 16:48

Re: Fullscreen OpenGL in windows 7

Postby redge » 2010-06-07 02:15

tigerVNC

required, hardware support OpenGL at both side (controlled and controller)

http://sourceforge.net/projects/tigervn ... e/download
VirtualGL-2.1.4.exe
UltraVNC 1.0.9.6.1 (built 20110518)
OS Win: xp home + vista business + 7 home
only experienced user, not developer
redge
Super-Mod
Super-Mod
 
Posts: 6815
Joined: 2004-07-03 17:05
Location: Switzerland - Geneva

Re: Fullscreen OpenGL in windows 7

Postby jonathandb » 2010-06-08 15:05

I now know Polling is not used when using the video driver.


I think the problem lies in the mirror driver. Let me tell you why:

In BOOL vncDesktopThread::handle_driver_changes, the number of changes is requested from the shared video memory:
int counter=m_desktop->pchanges_buf->counter;

If the counter is different from the previous set counter, the window is changed, and Region2D rgncache will be filled with the changed area coordinates of the screen.
The changed areas are also requested from the shared video memory:
m_desktop->pchanges_buf->pointrect

This pchanges_buf pointer is set on initialitaion of m_desktop, in case of using a videodriver:
pchanges_buf=m_videodriver->mypchangebuf;

mypchangebuf is a part of the shared video memory:
mypVideoMemory=VideoMemory_GetSharedMemory();
mypchangebuf=(PCHANGES_BUF)mypVideoMemory;

In this PCHAR VIDEODRIVER::VideoMemory_GetSharedMemory(void) is linked to a memory part set by "c: \\video0.dat" or "c: \\video1.dat".

I guess the mirror driver gives his output to the same memory part.


So, when using the video driver, only the output of the mirror driver is checked.

But I still don't know how the mirror driver is triggered to update. Does this happen somewhere in winvnc or does this happen in the mirror driver itself?
My guess is that it happens in the mirror driver because I can't find any function on winvnc that seems to update the mirror driver.

If i'm right, I'm only able to solve my problem by having the source code of the mirror driver.
Is the mirror driver source code available to the public?



Rex, I tried TigerVNC, and also TurboVNC before but they didn't seem to work. I guess it has something to do with DirectX 10.
Last edited by jonathandb on 2010-06-08 15:11, edited 2 times in total.
jonathandb
 
Posts: 3
Joined: 2010-05-28 16:48

Re: Fullscreen OpenGL in windows 7

Postby Rudi De Vos » 2010-06-08 21:00

A mirror driver clone all gdi functions of to the real driver.
drvbitblt
textout
etc...

If the opengl driver bypass gdi ( hardware acceleration) then the mirror
driver doesn't know it, no updates.
Rudi De Vos
Admin & Developer
Admin & Developer
 
Posts: 5737
Joined: 2004-04-23 10:21

Re: Fullscreen OpenGL in windows 7

Postby szakilaci » 2010-09-12 15:17

So what is the solution to see OpenGL? (even if it's slower...)
I have the same problem, but ONLY if running on a VirtualBOX (xp guest) enviroment.
szakilaci
8
8
 
Posts: 8
Joined: 2010-07-06 08:26


Return to Feature requests

Who is online

Users browsing this forum: No registered users and 3 guests