基于S3C6410 的windows ce 6.0 DirectDraw使用三缓冲
来源:互联网 发布:自动结束进程软件 编辑:程序博客网 时间:2024/06/05 19:50
S3c6410 使用DirectDraw画图时老是闪屏,网上收了好久说是使用双缓冲就可以解决闪屏问题,搞了2天图画多了还是会闪屏,帧数也达不到要求,很是郁闷!
在网上寻觅了好久说是可以使用三缓冲技术,终于解决了闪屏问题,动画帧还能达到34帧。还要感谢《M8SDK教程-游戏开发心得》作者gzdanny。
使用三缓冲代码如下:
其实只要把ddsd.dwBackBufferCount的值由原来的1改成2就是使用3缓冲,这样DDraw会自动为我们提供2个BackBuffer交替使用,同时省去了上一次Flip的等待时间.三缓冲比双缓冲虽然要多消耗一些资源,但是依据微软的说法,速度能再快20%左右,是一种比较好的方案。
使用双缓冲还闪屏,据我个人猜测可能是在flip返回DD_OK的时候,6410其实还没有真正的把图片画出去,只把执行命令放进2D引擎的32-word command FIFO,由于6410有一个16KB的指令Cache,程序执行的速度远远高于SDRAM拷贝的的速度,这时你再使用Blt数据块拷贝还是把命令放进FIFO,多执行几个Blt再flip时就要等待上一次的指令执行完才能再次画图,这样一来程序会有一个比较长等待时间因此降低效率,使用三缓冲可以有效降低此过程的等待时间。
但ddsd.dwBackBufferCount=3在速度上不会提升,可能是受到SDRAM拷贝速率的影响。
- 基于S3C6410 的windows ce 6.0 DirectDraw使用三缓冲
- 基于S3C6410 的windows ce 6.0 DirectDraw使用三缓冲
- 基于S3C6410的小车制作(三)
- 基于Windows CE的KITL技术
- 基于Windows CE的嵌入式Java解决方案
- 基于Windows CE的嵌入式Java解决方案
- 基于Windows CE的嵌入式Java解决方案
- 基于Windows CE的嵌入式Java解决方案
- 基于Windows CE的KITL技术
- 基于Windows CE的通信技术
- 基于Windows CE的KITL技术
- 基于Windows CE的超市预收款系统
- 基于Windows CE的SPI驱动程序设计
- DirectDraw Overlay的使用
- DirectDraw Overlay的使用
- DirectDraw Overlay的使用
- Windows CE的电源管理之三
- Windows CE的电源管理之三
- 设计原则利剑六--开闭原则
- 出差沈阳记之初来乍到
- 要选择生活,别老让生活选择你!
- vpn原理及实现--tcp还是udp
- pku2486 treedp
- 基于S3C6410 的windows ce 6.0 DirectDraw使用三缓冲
- 虚拟网卡和loopback的思想
- 大学读书计划
- SplitContainer
- 高效的网络消息类实现
- 华为IMS网管部署方式
- 国外虚拟主机域名绑定方法,及Addon Domain/Subdomains/Parked domain详解
- ubuntu 下的tftp服务配置
- 初来乍到