ba_wang_mao 发表于 2006-12-7 16:03

屏幕显示刷新速度如何解决?

<P>我采用NEO在MSDOS6.22下编程,由于有很多画面,需要切换画面。<BR>当切换画面时,需要将原先的画面清除(用背景色清除),感觉从一幅画面切换到另一幅画面,并将新画面画好不是很快,肉眼能够明显感觉不流畅,请问用什么方法解决。     </P>

一笔苍穹 发表于 2006-12-8 13:16

分辨率?色深?图片尺寸?加载smartdrv否?是否采用了脏矩形或换页技术?
[align=right][color=#000066][此贴子已经被作者于2006-12-8 13:17:45编辑过][/color][/align]

ba_wang_mao 发表于 2006-12-8 14:09

<P>我的程序在MSDOS6.22下运行(纯DOS),分辨率为800X600,色深为8。<BR>所有的函数(矩形、直线)都是由画点函数构成。<BR>请问:换页技术是否显示换页呢?如果不是该如何实现呢?<BR><BR>/////////////////////////////////////////////////////////////////////////////////////////////////<BR>//显存换页函数<BR>/////////////////////////////////////////////////////////////////////////////////////////////////<BR>void _Cdecl set_vbe_page(int page)<BR>{<BR>    if (g_cur_vbe_page != page)<BR>    {<BR>        _BX = 0;<BR>        _DX = g_cur_vbe_page = page;<BR>        _AX = 0x4F05;<BR>        __int__(0x10);<BR>    }<BR>}<BR><BR>/////////////////////////////////////////////////////////////////////////////////////////////////<BR>//画点函数<BR>/////////////////////////////////////////////////////////////////////////////////////////////////<BR>void _Cdecl putpixel(int x,int y,int color)<BR>{<BR>    long addr;<BR>    int page;<BR>    char far *videoptr = (char far *)0xa0000000L;</P>
<P>    addr = (long)y * 800 + x;<BR>    page = (int)(addr &gt;&gt; 16);<BR>    set_vbe_page(page);<BR>    *(videoptr+(unsigned int)(addr&amp;0xffff))= color;<BR>}<BR></P>

一笔苍穹 发表于 2006-12-8 14:23

NEO的换页不是你讲的那个概念,你看看用户文档里面有“滚屏换页”一节<BR>800X600比较高了,在纯DOS下系统处理没WINDOWS有虚DOS好,所以要采用一些比较好的优化措施。

ba_wang_mao 发表于 2006-12-8 16:35

运行用户文档里面有“滚屏换页”一节中的例程后,效果非常满意,谢谢。<BR>

页: [1]

编程论坛