双缓冲绘图
双缓冲绘图
大家小时候都玩过飞机大战吧,当我们在玩这种飞行射击类游戏时,背景图总是不断地向下移动的,从而给我们营造出一种飞机正在向前飞行的游戏体验。那么,图片的快速变化是如何实现的呢?
普通绘图的局限
-
当我们使用普通绘图时,计算机会将我们要显示的内容一点一点显示出来。比如,如果让计算机来将一张图片的像素点逐个显示出来,我们会发现,一张图片要花费几秒钟才可以显示完全, 显然这样的速度不是我们想要的。
-
我们在做飞机大战游戏的时候,我们应该总是让背景图在飞机的下层显示,如果使用单缓冲绘图,先画背景,再画飞机,会让人感受到背景和飞机不是同时出现的感觉,影响游戏体验。
-
那么,是什么原因造成了绘制的速度慢呢?
-
我们知道,计算机要将绘制的内容显示到屏幕上,需要两步:①将内存数据提交给显卡。②通过显卡渲染到屏幕上。
-
使用单缓冲绘图时,计算机刚计算出几个像素点就提交给显卡,让显卡去渲染到屏幕上,而屏幕的刷新率在60~144Hz,刷新频率*一次显示的像素点,就是一秒可以显示的像素点数,这个一秒显示的像素点数还不够一张图片的,就造成了我们所看到的,图片要花费好几秒才可以慢慢显示出来。
双缓冲绘图的原理
我们把下一帧需要显示的画面上所有的图形内容都计算好,存在内存中,然后再一起发送给显卡去显示,这样显卡刷新一次就可以将图片显示出来。
双缓冲绘图的好处
- 在我看来,使用双缓冲绘图有两点好处:
- 第一,绘制快,我们把要绘制的下一帧的图形数据存起来,然后一起发给显卡,显卡可以将这一帧的图片同时快速的出现在屏幕上。
- 第二,绘制前可以整理图形数据的先后位置,比如,我们需要让飞机永远显示在背景图的上层,就可以先在内存中先画背景图,再画飞机,最后一起显示到屏幕。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤