Update: UltraVNC 1.4.3.6 and UltraVNC SC 1.4.3.6: https://forum.uvnc.com/viewtopic.php?t=37885
Important: Please update to latest version before to create a reply, a topic or an issue: https://forum.uvnc.com/viewtopic.php?t=37864

Join us on social networks and share our announcements:
- Website: https://uvnc.com/
- GitHub: https://github.com/ultravnc
- Mastodon: https://mastodon.social/@ultravnc
- Facebook: https://www.facebook.com/ultravnc1
- X/Twitter: https://x.com/ultravnc1
- Reddit community: https://www.reddit.com/r/ultravnc
- OpenHub: https://openhub.net/p/ultravnc

Fullscreen OpenGL in windows 7

Any features you would like to see in UltraVNC? Propose it here
Post Reply
jonathandb
Posts: 3
Joined: 2010-05-28 16:48

Fullscreen OpenGL in windows 7

Post by jonathandb »

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.
B
800
800
Posts: 2338
Joined: 2009-09-09 14:05

Re: Fullscreen OpenGL in windows 7

Post by B »

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.
jonathandb
Posts: 3
Joined: 2010-05-28 16:48

Re: Fullscreen OpenGL in windows 7

Post by jonathandb »

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.
redge
1000
1000
Posts: 6797
Joined: 2004-07-03 17:05
Location: Switzerland - Geneva

Re: Fullscreen OpenGL in windows 7

Post by redge »

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
jonathandb
Posts: 3
Joined: 2010-05-28 16:48

Re: Fullscreen OpenGL in windows 7

Post by jonathandb »

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.
User avatar
Rudi De Vos
Admin & Developer
Admin & Developer
Posts: 6863
Joined: 2004-04-23 10:21
Contact:

Re: Fullscreen OpenGL in windows 7

Post by Rudi De Vos »

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.
szakilaci
8
8
Posts: 8
Joined: 2010-07-06 08:26

Re: Fullscreen OpenGL in windows 7

Post by szakilaci »

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.
Post Reply