【发布时间】:2011-12-26 22:03:32
【问题描述】:
翻页是什么意思?
为什么我们在图形编程中需要它?
【问题讨论】:
-
简短回答:在缓冲区中绘制页面,以便在可用时显示。 “翻转”页面意味着在完整缓冲区和正在进行的缓冲区之间交换。
标签: c graphics page-flipping
翻页是什么意思?
为什么我们在图形编程中需要它?
【问题讨论】:
标签: c graphics page-flipping
翻页是一种简单的硬件辅助技术,用于无闪烁图形,我们已经使用了几十年。
需要硬件支持:
视频子系统必须至少有两个内存区域(页) 可能是可见的,其中只有一个是可见的 给定的时刻。
视频子系统支持软件可以选择的某些方法 两个页面中的哪一个是可见的。这通常只是一个 向硬件发出指令,并且切换是瞬时的,因为 硬件只是停止扫描一页并开始扫描另一页 页面。
因此,我们的想法是,在任何给定时刻,我们都保持一个页面可见,而在另一个页面上,我们正在渲染下一帧。一旦我们完成了帧的渲染,我们发送的硬件指令会立即“翻转”可见页面,这意味着我们进行渲染的页面 现在变得可见,而以前可见的页面变得不可见,我们可以在其中渲染下一帧。我们对每一帧重复这个过程,总是在用户看到可见页面时呈现在不可见页面上。
更详细地说,它的工作原理如下:
我们有两页,A 和 B。一开始两页都是空白的, 页面 A 可见,页面 B 不可见。
我们在页面 B 上渲染我们的图形框架,它是不可见的,所以 最初用户看不到它。
在页面 B 中完成渲染帧后,我们发送硬件 翻转页面的指令,因此用户现在开始看到我们的 在页面 B 上呈现。
我们在不可见页面 A 上渲染下一帧,因此用户不会 看到正在发生的渲染。 (这将被视为闪烁。)
在页面 A 上完成渲染后,我们再次翻转页面,所以 现在用户可以看到我们新渲染的页面,而之前 可见页面现在变得不可见并且可用于呈现下一个 框架。
我们不断为每一帧重复这个过程。
【讨论】:
直接在屏幕上绘制通常太慢了,视觉上,你看到了绘图。因此,您在显示另一页的同时绘制一页。然后当它准备好显示你“翻页”到完全绘制的页面时,你就可以开始在另一页上绘图了。
制作流畅的动画。
【讨论】: