双缓冲绘图

双缓冲绘图

大家小时候都玩过飞机大战吧,当我们在玩这种飞行射击类游戏时,背景图总是不断地向下移动的,从而给我们营造出一种飞机正在向前飞行的游戏体验。那么,图片的快速变化是如何实现的呢?

普通绘图的局限

  • 当我们使用普通绘图时,计算机会将我们要显示的内容一点一点显示出来。比如,如果让计算机来将一张图片的像素点逐个显示出来,我们会发现,一张图片要花费几秒钟才可以显示完全, 显然这样的速度不是我们想要的。
  • 我们在做飞机大战游戏的时候,我们应该总是让背景图在飞机的下层显示,如果使用单缓冲绘图,先画背景,再画飞机,会让人感受到背景和飞机不是同时出现的感觉,影响游戏体验。
  • 那么,是什么原因造成了绘制的速度慢呢?
  • 我们知道,计算机要将绘制的内容显示到屏幕上,需要两步:①将内存数据提交给显卡。②通过显卡渲染到屏幕上。
  • 使用单缓冲绘图时,计算机刚计算出几个像素点就提交给显卡,让显卡去渲染到屏幕上,而屏幕的刷新率在60~144Hz,刷新频率*一次显示的像素点,就是一秒可以显示的像素点数,这个一秒显示的像素点数还不够一张图片的,就造成了我们所看到的,图片要花费好几秒才可以慢慢显示出来。

双缓冲绘图的原理

我们把下一帧需要显示的画面上所有的图形内容都计算好,存在内存中,然后再一起发送给显卡去显示,这样显卡刷新一次就可以将图片显示出来。

双缓冲绘图的好处

  • 在我看来,使用双缓冲绘图有两点好处:
  • 第一,绘制快,我们把要绘制的下一帧的图形数据存起来,然后一起发给显卡,显卡可以将这一帧的图片同时快速的出现在屏幕上。
  • 第二,绘制前可以整理图形数据的先后位置,比如,我们需要让飞机永远显示在背景图的上层,就可以先在内存中先画背景图,再画飞机,最后一起显示到屏幕。

Original: https://www.cnblogs.com/classicltl/p/16418902.html
Author: classic123
Title: 双缓冲绘图

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/570181/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球