现在要求快速实时修改屏幕上内容,比如提高规定矩形区域内的对比度,添加OSD,一定是在Windows下可以使用的。例如ATI Tray Tools 可以在游戏或者是电影的右上角显示帧速,不过他拦截的应该是Direct3D部分的内容。DDK中的mirror driver和framebuf范例都看过了,前者是添加一个虚拟显卡设备,原显卡照常工作,后者貌似需要在安全模式下才起作用,都是隔靴搔痒。需要的是拦截原显卡上的帧缓冲区。

解决方案 »

  1.   

    原显卡上的帧缓冲区很大,是分段一部分一部分映射到显示区域的,映射上去的数据有隔行逐行和隔多行等排列方式,还有颜色数据位数等问题。不同厂家的显卡工作方式还不同。这个方案难度不小。
    不知道你要求的快速快到什么程度,如果要求不是特别快,模拟键盘发送PrintScreen在裁剪版就能找到屏幕信息,比较两次就能判断屏幕变化情况,方便快捷实现简单,是一个比较偷懒的权宜之计。
    裁剪版不安全,如果是正儿八经的大项目还是想想别的方案吧。
      

  2.   

    如果硬件支持video overlay, 联系显卡厂商以获得驱动的开发接口。
      

  3.   

    这个东西忙了很久也没什么头绪截屏肯定慢的。
    我注意到ATI Tray Tools插件开发Readme里面有这么一个功能:
    What you have for plug-ins? 
    1. Full access to low level driver
    2. Working with ports, in/out
    3. Map frame buffer from physical address space to linear
    4. Reading and setting clocks注意第三个,貌似它可以办到,只不过不公开罢了,并且没有给出这里的范例程序,资料也不全