| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 807 人关注过本帖
标题:采用虚拟屏幕技术清除整个屏幕就是快,如何将将画线函数也改用本方法实现呢 ...
只看楼主 加入收藏
ba_wang_mao
Rank: 2
来 自:成都理工大学
等 级:论坛游民
帖 子:297
专家分:27
注 册:2006-11-7
收藏
 问题点数:0 回复次数:1 
采用虚拟屏幕技术清除整个屏幕就是快,如何将将画线函数也改用本方法实现呢?

采用如下方法清除800X600X256屏幕为黑色太快了,比用PutPixel直接写屏方式快多了,而且没有闪烁感,如何将将画线函数也改用本方法实现呢?

/////////////////////////////////////////////////////////////////////////////////////////////////
// 快速清除屏幕子程序
// 由于分辨率为800*600*256色(8位深度),因此共需800*600/65535=8页=512K
/////////////////////////////////////////////////////////////////////////////////////////////////
void _Cdecl GuiQuickClsScreen(int color)
{
unsigned int i,j;
unsigned char VDCBuf[800];
unsigned int dest_off = 0;

memset(VDCBuf,color,800);
for (j = 0 ; j < 8 ; j++) // 页号(共需8页)
{
set_vbe_page(j); // 依次选择页号0-页号7
dest_off = 0; // 偏移
for (i = 0 ; i < 81 ; i++) // 由于显卡每页65535,因此先送64800个像素
{
movedata(FP_SEG(VDCBuf),FP_OFF(VDCBuf),0xa000,dest_off,800);
dest_off += 800; // 指向下一根扫描线
}
movedata(FP_SEG(VDCBuf),FP_OFF(VDCBuf),0xa000,dest_off,735);
// 将每页余下的735个像素单独送
}
}

搜索更多相关主题的帖子: 函数 屏幕 将将 技术 虚拟 
2006-12-19 09:16
一笔苍穹
Rank: 1
等 级:新手上路
帖 子:640
专家分:0
注 册:2006-5-25
收藏
得分:0 
画水平线可以用这种方法优化,其它角度的线就不行了。所以可以专门做一个hline()函数。但显示位图函数可以采用这个方法,我以前做过测试,很快的。
2006-12-19 10:09
快速回复:采用虚拟屏幕技术清除整个屏幕就是快,如何将将画线函数也改用本方法实 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032513 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved