精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>图形图像及多媒体专题>>Re:请教图形编程问题:屏幕复制(在线等待答案)?

主题:Re:请教图形编程问题:屏幕复制(在线等待答案)?
发信人: wenbobo(灌了拂衣去)
整理人: wenbobo(2003-08-29 00:58:01), 站内信件
显存是在显卡上的,读写大块的显存,都要先通过操作显卡的窗口寄存器,把其中一块(一个窗口)映射到内存。也就是说,显存类似于“分页”内存,一次只能访问一个页,要访问特定的显存,必须先定位显存的“页”,也就是设置CRT窗口寄存器。

VBE利用保护模式,提供了线性访问显存的显示模式。在这种模式下,程序需运行在保护模式,当访问特定地址段的虚拟内存时,将引发页故障,VBE在故障处理时再设置显卡的窗口寄存器,把窗口内的显存映射到物理内存,从而应用程序可以访问。这些操作是vbe在后台完成的,对于应用程序来说是透明的,从使用上讲,程序员会觉得显存就和内存一样是“连续”的一块。

一般编写这种使用vbe的程序,需要使用dos extender,可以使用watcom c++,high c++,或者bc4 + power pack。

建议使用watcom c++,用dos4gw扩展器,这样兼容性比较好。事实上,以前的所有使用vesa的游戏都是用dos4gw的,例如古墓丽影,RA等

【 在 xmxh77 的大作中提到:】
:操作系统:DOS6.22;  
:开发工具:BC3.0;  
:问题:将显示模式设置为800*600*256(VESA 0x105),如何从当前屏幕COPY一块数据(即图象),类似Borland公司提供的getimage和putimage。注意:内存开辟一块只有64K的显存映射,在VESA(0x105)下要显示满屏,需要通过调用中断(0x10)来切换显示页,当你显示完满屏时,内存中显存映射的数据只是最后显示页的数据。可不可以直接从显存中取得数据,如是的话,又如何取法?  
:
:多谢!!!!!!!!  
:......
 


----
掬水月在手
弄花香满身


广州社区嵌入式开发版    广州社区C语言版     我的纯音乐网站

[关闭][返回]