现在要求快速实时修改屏幕上内容,比如提高规定矩形区域内的对比度,添加OSD,一定是在Windows下可以使用的。例如ATI Tray Tools 可以在游戏或者是电影的右上角显示帧速,不过他拦截的应该是Direct3D部分的内容。DDK中的mirror driver和framebuf范例都看过了,前者是添加一个虚拟显卡设备,原显卡照常工作,后者貌似需要在安全模式下才起作用,都是隔靴搔痒。需要的是拦截原显卡上的帧缓冲区。
调试欢乐多
不知道你要求的快速快到什么程度,如果要求不是特别快,模拟键盘发送PrintScreen在裁剪版就能找到屏幕信息,比较两次就能判断屏幕变化情况,方便快捷实现简单,是一个比较偷懒的权宜之计。
裁剪版不安全,如果是正儿八经的大项目还是想想别的方案吧。
我注意到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注意第三个,貌似它可以办到,只不过不公开罢了,并且没有给出这里的范例程序,资料也不全