美文网首页鲁班小技巧游戏夜读壹 窗 丝 语
游戏夜读 | 如何优化缓冲加载?

游戏夜读 | 如何优化缓冲加载?

作者: 良宵听雨 | 来源:发表于2019-07-14 12:03 被阅读399次

游戏画面元素丰富,则容易屏幕闪烁。这种现象的原因是负责在屏幕上画画的函数动作太慢。而这种现象之所以被发现,主要是三个方面的因素。第一,是因为人类肉眼有“视觉残留”,残留的时间约是零点一秒,换句话说,一秒钟至少播放十张图片,这样人类看起来是“动画片”,这样屏幕就不会闪烁。实际上,现在每秒钟在屏幕上的动画次数都大于十次。第二,是因为除了有内容的图像之外,一般还有纯黑的画面,进行交替播放,以此来模拟实现物体的位移,而纯黑的画面比较容易,有内容的图像处理起来麻烦一些,如果计算机反应慢,就会慢一拍,最后效果变成一种闪烁。第三,是因为画面张数越多,表现得效果就越细腻,尤其是微观物体放大的画面、快速运动的近景等,而这又加重了计算负担。

为了保证播放效果的流畅度,程序家发明了缓冲、缓冲加载、渲染等分步骤的屏幕图像显示方法。其中的“缓冲加载”涉及比较关键的前后屏算法技术。当然,这些起初只针对大型、复杂、丰富的场面,尤其是对品质要求高的场景。

缓冲加载的方针主要是“尽量减少前屏绘制的工作量”,思路的重点是“选区”,更具体的说是“块移图面”,英文称为“blit surface”,这里简称为“位移”。位移(blit)大体上分有三类。

第一类是“全屏加载”。全屏的做法虽然简单粗暴,但不一定效果最差,尤其是屏幕的大部分位置都需要更新的情况下,采用全屏绘制,与理论最优的区域差距并不会很大,却能省去不少脑细胞。

第二类是“脏脏块的合并与切割”。脏脏块这个词,是仿照脏脏包而来的,一般的英文是:dirty rectangle,与脏数据的“脏”用意差不多,意思不相同。脏数据是要被清洗掉的数据,脏脏块则是游戏世界里的变动,是那些需要在前屏重新绘制的区域,对于前屏来说,脏脏块是要被重新粉刷的区域。之所以把区域用块状去选择,这只是目前大多数游戏引擎或代码中的手段,可能是长方形比较好定义:长、宽。所以这一类方法的核心不在于矩形区域,而在于基于矩形的一些合并、切割,试图在全屏的全集中找到一个或数个子集,然后对这些子集进行重绘,重绘的面积就相对小很多,特别适用于那些每次只更新特定一些部分的游戏画面。

第三类是“泥瓦工和脏脏标签”。泥瓦工的意思就是,先把全屏人为分成几个瓦片,然后每次就检测这几个部分中的哪些需要被重绘,可以说是用户界面设计师(UI)的好朋友。脏脏标签也是同样的思路,只是这次的瓦片不是事先固定的,可以是动态变化的物体本身,这种方法直观上就比较适合游戏世界的物体比较有规则,尤其是平面2D的。

总的来说,缓冲加载到处都是优化问题。不过,有句话说的是:优化游戏代码可能会引来麻烦。虽然离屏缓冲、缓冲加载这两个部分跟核心的游戏逻辑已经相去甚远,但不可否认的他们也是一套游戏代码的一部分,还是要慎重。

文/良宵听雨。授权“游戏夜读”发表。

相关文章

  • 游戏夜读 | 如何优化缓冲加载?

    游戏画面元素丰富,则容易屏幕闪烁。这种现象的原因是负责在屏幕上画画的函数动作太慢。而这种现象之所以被发现,主要是三...

  • 音频优化之方法

    这是我在《Unity游戏优化 (第2版)》看的,记录一下~ 了解了音频加载方式和音频格式后,如何来优化一下性能呢?...

  • 微信小游戏加载速度优化经验

    最初我们游戏是在载入的loading界面将所有资源进行加载,这样导致游戏启动的时候加载使用了相当长的时间,为了优化...

  • iOS 面试 - 项目优化

    淘宝下拉加载更多如何优化 TableView的性能优化 1、通过正确的设置 reuseIdentifier 来重用...

  • 今日份打卡 176/365

    技术文章* 写缓冲* 一般写缓冲:以缓冲池为中心,双写缓冲池以及redo log* InnoDB优化写缓冲:以缓冲...

  • 常见面试题--js+css+vue

    1、变量提升、函数提升 2、数组的常用方法 3.优化首屏加载速度 4.Vue 首屏加载速度优化 5、Vue如何设置...

  • 字节跳动后端面经七

    MySQL慢查询如何优化? InnDB存储引擎默认隔离级别,如何实现? InnoDb针对数据库缓冲池管理使用LRU...

  • 前端面试问题记录一

    1.如何优化单页面优化应用加载慢的问题? 1.使用CDN2.路由懒加载3.Gzip压缩 2.$router.pus...

  • 游戏夜读 | 如何制作游戏?

    最懒的办法就是folk,弄一备份,游戏就制作完成了。那么问题来了,最初的游戏是怎么制作的呢?那就不得不说回到游戏本...

  • 设备管理(二)

    目录 5.3 缓冲技术 单缓冲 双缓冲 多缓冲 5.4 驱动调度技术 存储设备的物理结构 循环排序 优化分布 搜查...

网友评论

    本文标题:游戏夜读 | 如何优化缓冲加载?

    本文链接:https://www.haomeiwen.com/subject/dyybkctx.html