比如把一个窗口的显存映射到一个内存空间里,操作这部分内存只影响那个窗口,有这样的API么?它的执行效率高么?刷新率能达到多少?
DOS下的显示环境没有标准,指令也太贫困了,我受不了了
当年那些SVGA显卡制造商太没良心了,等到显卡都完全成熟了才开始想到标准,结果只有一个软件的标准,但是不操作硬件却完全发挥不出汇编的优势
IBM本来把标准弄的挺好的,为什么到了SVGA他就放手不管了?
------解决方案--------------------------------------------------------
看看DirectX或Openxx能否满足你的要求。
------解决方案--------------------------------------------------------
如果你要往显示器上显示,用DirectX就很不错。
不知道你有没有发现,现在显卡的显存很大,远大于显示到屏幕上的所需。这时因为现在显卡的GPU增加了很多浮点运算的功能(计算机的CPU整数运算强),以适应三维等图形应用。既然要做复杂应用,就不能不多搞点内存。所以显存的管理比较复杂了,和DOS时代的显存0x00就对应显示器左上角像素不同了。再说Windows保护模式下,也不让你对硬件内存直接操作。
DirectDraw是用Surface的形式管理显存。
用IDirectDrawSurface的Lock函数就可以锁定Surface的内存,也就是你说的映射为一个指针,你就可以直接读写了。读写完Unlock释放,这个Surface占用的显存就有可能被释放(比如更改了显示分辨率)。
如果你想获取显示器上的内容,用DirectX应该也是可以的。不过我看现在截屏的软件流行做一个虚拟的显卡驱动程序。具体原因还没有研究。
------解决方案--------------------------------------------------------
对硬件的操作是操作系统干的事,如果你想直接操作显存,那你就自己写个操作系统,然后重装系统,这样一开机就可以自动运行你的图形程序了。
------解决方案--------------------------------------------------------
要想操作显存,得熟悉GPU指令集才行,比如这是介绍R600 GPU的指令集的电子书
http://www.x.org/docs/AMD/r600isa.pdf