社区
机器视觉
帖子详情
双缓冲是怎么提速的??哪位高手指点一下
qinzheng
2003-12-31 10:09:47
在下需要编写一个手机设备的LCD控制器的驱动程序,我希望能实现比较好的游戏效果,因此,想要实现PC游戏常用的双缓冲的功能,但是不知道双缓冲怎么会快??
目前,我的显卡(LCD控制器)有很大的一块显存,我可以将它分成两块,每一块
叫做一个缓冲区,我可以分别填充他们,然后调用传输标志位,将其中任意一块发到
LCD上,但是,这样似乎不会比1块显存快啊?? 是我实现的方法彻底不对还是某些调度方法不正确??
是国产的设备,哪位高手指教一下啊,感激不尽^^
...全文
190
3
打赏
收藏
双缓冲是怎么提速的??哪位高手指点一下
在下需要编写一个手机设备的LCD控制器的驱动程序,我希望能实现比较好的游戏效果,因此,想要实现PC游戏常用的双缓冲的功能,但是不知道双缓冲怎么会快?? 目前,我的显卡(LCD控制器)有很大的一块显存,我可以将它分成两块,每一块 叫做一个缓冲区,我可以分别填充他们,然后调用传输标志位,将其中任意一块发到 LCD上,但是,这样似乎不会比1块显存快啊?? 是我实现的方法彻底不对还是某些调度方法不正确?? 是国产的设备,哪位高手指教一下啊,感激不尽^^
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zzwu
2003-12-31
打赏
举报
回复
这里有一篇文章"J2ME游戏开发技巧":
http://www.cnemb.com/print.php?sid=149
可以参考.
我想关键在于考虑如何提高数据写入后台缓冲的速度.
寻开心
2003-12-31
打赏
举报
回复
多缓冲技术对于速度要求比较高的图形系统,或者是经常快速更换显示内容的程序比较有效。
1 从显示流程来说
通常是清理背景,然后重新绘制,如果直接在屏幕上进行清理背景往往会造成闪烁。
为了解决这种现象,程序往往是把要更新的内容直接写在一个全新的缓冲当中,
更换缓冲使用的是显示卡内部的内存映象技术,直接把要显示的内容从一个区域映射
到另外一个区域,所以处理的速度非常的快,一般来说会感觉不到闪烁。
2 从显示卡自身来说
显示卡按照一定的刷新频率,每个一段时间就读取显示区域的内容,然后显示在屏幕上,
在处理显示的时候,显存被系统独占,程序没有办法写入。这就导致程序处理显存的
速度被降低了。使用双缓存的技术,程序和显示卡各自处理各自的显存,互相不冲突,
等程序处理完缓冲后,再调换过来,互不干扰,可以提高速度。
另外图形往往是动态生成,这也需要时间,图形生成算法越复杂处理的速度越慢,
这样就不能保证填充显示卡的数据流始终存在,使得带宽利用率不高。
3 能否用双缓冲方式,有两个条件,一个是显示内存是否足够大,一个是显示卡自身是否支持显示页面切换方式。如果显示卡同时满足这两个条件就可以使用,只要不是早期的显示卡应该都没有问题。从显示卡的原理上说,显示到屏幕的内容是对应到显存当中的一个地址,从该地址开始的一段内容会被解析到屏幕上,当显存足够大的时候,通过调整显示的开始地址就可以实现多页面/多缓冲的显示技术。因为这个显示的地址是显存控制器里面的一个寄存器内容,更换它几乎不花费任何时间,所以缓冲切换速度很快。需要注意,如果你的缓冲不是建立在显示内存当中,就得不到这个好处。因为建立在内存当中的缓冲不能被显示卡直接使用,必须传递给显示卡,这个传递过程和显示卡内部直接转换显示地址的速度是不可同日而语的。图形学当中,从内存到显示卡的填充速度是瓶颈,带宽不足。
4 只要有可能最好就是直接向显存当中写入数据,而不是在内存当中写缓冲,然后传递进去,再切换。
qinzheng
2003-12-31
打赏
举报
回复
果然高手,我明白一些了,谢谢您的指点^^
Android view的
双缓冲
机制
什么叫做view的
双缓冲
机制?顾名思义,
双缓冲
意味着会有两个缓冲层,缓冲的出现就是为了提高view的刷新速度。 我们知道,由于人眼的原因,1秒24帧的动画才能让人感觉到顺畅,因此每一帧的时间大概也就是41ms,而且这41ms并不是全部留给Android代码的,最后留给Android发挥的时间也就只有16ms左右,当我们需要绘制一个重量级的动画时,16ms不足以将整个view重新...
双缓冲
绘图算法C++例子实现
文章目录前言一、
双缓冲
绘图算法?二、使用步骤1.准备环境2.创建项目3. 创建小球类4. 在view文件中设置所需参数及函数1. 需要添加一个小球对象,还需要添加小球移动的距离变量;2. 需要添加一个定时器,用以更新小球的位置,同时调用绘图函数显示图像;3.在绘图函数中调用
双缓冲
绘图算法函数;4. 在
双缓冲
绘图算法函数中,实现将小球图像保存至内存DC中,再复制到显示DC中显示。总结在 void CCVClassOneView::DoubleBuffer(CDC* pDC) 函数最后,有将旧位图重新设置进内存
单缓冲、
双缓冲
、循环缓冲
缓冲区管理 什么是缓冲区?有什么作用? 缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可以利用内存作为缓冲区。 使用硬件作为缓冲区的成本较高,容量也较小,一般仅用在对速度非常高的场合(存储器管理寄存器,有对页表访问的频率较高,因此使用速度很快的联想寄存器 来存放页表项的副本) 一般情况下更多的是使用内存作为缓冲区,“设备独立性软件”的缓冲区就是要组织管理好这些缓冲区。 缓冲区的作用 缓和CPU和IO设备之间速度不匹配矛盾。 减少对CPU的中断频率,放宽对CPU中断相应的时间限制 解决数据粒度不匹配的
MFC下
双缓冲
绘图的简单实现
MFC下
双缓冲
绘图的简单实现 在窗口DC上进行绘图,简单直接的做法就是直接调用GDI绘图函数进行绘图操作。当需要绘制新的图形时,就利用画刷刷去旧有的图形,然后再次调用GDI绘图。这种简单、朴素的绘图方法在简单场景下能够胜任简单的绘图任务,但当需要绘制复杂图形例如位图或者绘图量操作很大的时候就不能够胜任了,会产生闪屏现象。所以就有了
双缓冲
绘图,
双缓冲
绘图指的是:不简单的使用画刷去刷新D...
双缓冲
(double buffering)的原理和使用
最近在使用C#做项目的时候发现在加载一个具有大量控件和复杂背景图形的窗口时,会出现很影响视觉体验的频闪问题。最后发现使用
双缓冲
能很好的解决这个问题。下面就介绍
一下
双缓冲
的原理及使用。一、
双缓冲
作用
双缓冲
甚至是多缓冲,在许多情况下都很有用。一般需要使用
双缓冲
区的地方都是由于“生产者”和“消费者”供需不一致所造成的。这样的情况在很多地方后可能会发生,使用多缓冲可以很好的解决。我举几
机器视觉
4,499
社区成员
15,353
社区内容
发帖
与我相关
我的任务
机器视觉
图形图像/机器视觉
复制链接
扫一扫
分享
社区描述
图形图像/机器视觉
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章