-
-
[求助]关于VNC中用到的屏幕截图算法的疑问...
-
发表于:
2008-6-10 21:52
14043
-
[求助]关于VNC中用到的屏幕截图算法的疑问...
本想写一个远程屏幕传输,但卡在了差异截图上面。原先是通过划块比较,传输变化的区域来实现的,不过速度上根本无法满足要求
。主要问题是划成32x32小块后,需要对这些小分块与之前的逐一比较(块分得越大越慢),这个过程比较慢而且CPU占用相当高。
我目的是实现一个类似VNC的远程屏幕,求各位前辈指点迷津...
看了UltraVnc的源代码,发现它好像是通过HOOK消息循环实现的。/VNCHooks/VNCHooks.cpp里看出点眉目,活动窗体一旦发生重绘,就PostMessage()告诉VNCServer更新指定区域。不过看到vncDesktop.cpp我就有点头大了(主要是代码太多
),不知道它是如何具体调用VNCHooks.dll的,望研究过VNC的前辈指点一二。能否将VNCHooks单独拿出来做屏幕截图之用?应该如何下手?
ps: Windows的3389也很强悍的,从具体使用上看应该是划块传输。问题是它如何做到比较屏幕分块而只占用3%左右CPU的?听说从Win2000后就有个镜像驱动,可以方便的实现屏幕传输,但是网上和MSDN中都搜不到,真是急死我了
[课程]Linux pwn 探索篇!