计算机图形编程中的页面翻转是什么意思?

use*_*312 3 c graphics page-flipping

翻页是什么意思?

为什么我们在图形编程中需要它?

Mik*_*kis 5

翻页是一种简单的硬件辅助技术,用于实现无闪烁图形,已经存在了几十年。

它需要硬件的支持:

  • 视频子系统必须至少有两个可能可见的内存区域(页面),在任何给定时刻只有一个区域是可见的。

  • 视频子系统支持某种方式,软件可以借此选择两个页面中的哪一个是可见的。这通常只是对硬件的单个指令,并且切换是瞬时的,因为硬件只是停止扫描一页并开始扫描另一页。

所以,我们的想法是在任何给定的时刻我们保持一个页面可见,而在另一个页面上我们正在渲染下一帧。一旦我们完成了框架的渲染,我们发送硬件指令立即“翻转”可见页面,这意味着我们渲染的页面现在变得可见,而以前可见的页面变得不可见并且可供我们使用在其中渲染下一帧。我们对每一帧重复这个过程,当用户看到可见页面时,总是在不可见页面上渲染。

更详细地说,它的工作原理如下:

  • 我们有两页,A 和 B。一开始两页都是空白的,A 是可见的,B 是不可见的。

  • 我们在页面 B 上渲染我们的图形框架,这是不可见的,所以最初用户看不到它。

  • 一旦我们在页面 B 中渲染完我们的框架,我们就会发送硬件指令来翻转页面,这样用户现在开始在页面 B 上看到我们的渲染。

  • 我们在不可见的页面 A 上渲染下一帧,因此用户看不到渲染的进行。(这将被视为闪烁。)

  • 一旦我们在页面 A 上完成渲染,我们再次翻转页面,所以现在用户可以看到我们新渲染的页面,而之前可见的页面现在变得不可见,可用于渲染其中的下一帧。

  • 我们不断为每一帧重复这个过程。

  • 不仅仅是几十年前,它今天仍然是一种完全相关的技术。 (4认同)
  • 这不是和双缓冲一样吗? (2认同)
  • @Seth Carnegie 它与双缓冲非常相似,但不一样。在双缓冲中,视频 RAM 总是在一个地方,CPU 总是在屏幕外的系统 RAM 的某个区域进行渲染,然后将该区域复制到视频 RAM 上。 (2认同)