关于直接对显存操作的图形图像编程的讨论,请大家讨论

AbnerChai 2003-10-17 02:04:09
大家知道,在DOS年代,图形编程基本上是采取tc2.0或borland c++3.1等编译器,采用包含graphics.h头文件,调用initgraph()函数或内嵌汇编调用bios中断,设置显示模式,可以直接对显示缓冲区首地址:A0000操作写屏,以达到多屏,图像移动,动画等技术效果。
后来随着显示卡的发展,出现了大容量的显存,如32M显存。同时windows操作系统使得DOS一去不返。在windows中编程,如VC6.0,各种按钮也好,窗体也好,直接调用即可生成可视化的界面来。好像人们不再关心对显存、内存操作等问题了,就边windows系统本身也是在图形模式下的界面。
那么请问,windows中对大显存\显卡的编程技术原理是什么?由于windows中采用flat内存模式和32位汇编代码。请问windows中显卡内存和内存地址如何映射?如何直接可以分配显存使用?windows桌面对应于显存(或内存)中哪一块地址?如何可以做到直接像dos中的那样直接写屏,以达到高速图形图像处理的要求?例如,我们想直接改写显存中的某块数据,以达到改变桌面上显示的效果。
请各位高手讨论,各种意见均欢迎!给出参考学习资料地址也可。谢谢大家!

...全文
404 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
AbnerChai 2003-10-20
  • 打赏
  • 举报
回复
请大家继续讨论:
DirectX可以直接写显存吗?不好意思,小弟没研究过directx编程。
另外,在windows98 以后,windows2000,winXP中类似于win95中的vxd是什么?
我原来看过一本书,说vxd编程在win95年代吃香。现在随着win2000,98等出现,己没有什么前程,
这是什么意思?那么,现在类似的技术是什么?
PP_Sky 2003-10-18
  • 打赏
  • 举报
回复
Windows下没有直接提供这种方式的访问,
还有,你的思路可能也不太对了,在dos时,你这种方法可能是很好的,不过现在下即使实现出这种方法,也不能达到加速的目的,原因:
1.dos下,可以直接copy一块数据到video memory; 可是现在这种方法实现起来会消耗去不少cpu时间,总体速度反而会下降,还不如用DMA传过去(DirectX里支持),这样,在位图copy的同时,你还可以处理其它的操作。
2.现在不少显卡都有很强的硬件加速,让显卡上的芯片放在那里休息。。。而把所有的工作都给cpu做,还要自已写算法,这太麻烦了;而且显卡上的算法是硬件实现的,比cpu处理的要快.

对于你说的方法,在windows下自已写vxd的话理论上是可以实现的(我以前也有过和你一样的想法,看了一下这方面的书,没有去做,太麻烦了),不过会比DirectX/OpenGL之类的图形库慢,因为你最多只能用到VESA,以后的加速各个显卡不同,除非你只用某一种显卡,而且可能得到相关的资料,自已写驱动.
AbnerChai 2003-10-18
  • 打赏
  • 举报
回复
没人反应吗?

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧