# 序列型模式 Sequencing Patterns 本章的三种模式都是游戏开发中的常客: - 游戏循环是游戏运行的主心骨。 - 游戏对象通过更新方法来进行每帧的更新。 - 我们可以用双缓冲模式存储快照,来隐藏计算机的顺序执行,从而使得游戏世界能够同步更新。 ## ## 7.双缓冲模式 Double Buffer 双缓冲模式,使用序列操作来模拟瞬间或者同时发生的事情。 ### ### 要点 - 一个双缓冲类封装了一个缓冲:一段可改变的状态。这个缓冲被增量的修改,但我们想要外部的代码将其视为单一的元素修改。为了实现这点,双缓冲类需保存两个缓冲的实例:下一缓存和当前缓存。 - 当信息从缓冲区中读取,我们总是去读取当前的缓冲区。当信息需要写到缓存,我们总是在下一缓冲区上操作。当改变完成后,一个交换操作会立刻将当前缓冲区和下一缓冲区交换,这样新缓冲区就是公共可见的了。旧的缓冲区则成为了下一个重用的缓冲区。 - 双缓冲模式常用来做帧缓冲区交换。 ### ### 使用场合 双缓冲模式是那种你需要它时自然会想起来的模式。以下情况都满足时,使用这个模式很合适: - 我们需要维护一些被增量修改的状态 - 在修改过程中,状态可能会被外部请求。 - 我们想要防止请求状态的外部代码知道内部是如何工作的。 - 我们想要读取状态,而且不想在修改的时候等待。 ### ### 引申与参考 - 我们几乎可以在任何一个图形API中找到双缓冲模式的应用。如OpenGl中的swapBuffers() 函数, Direct3D中的“swap chains”,微软XNA框架的 endDraw() 方法。 - 本节内容相关的英文原文: - 本节内容相关的中文翻译: