执行最少量的GPU工作

时间:2017-03-25 09:47:40

标签: performance opengl graphics game-engine

应用程序是否可以减少"降低"从实时(例如60fps)图形应用程序,它总是呈现为简单地显示"位图" (例如,3D世界内容的简单位blit而不是完整的重新计算)。然后,当给出用户输入(或某些特定于应用程序的条件)时,它会快速回到实时模式。

使用某种管理程序代码,我想可以抓取帧缓冲区的内容,暂停3d图形,然后只是在先前抓取的帧缓冲区上进行blit,而不是重新渲染未更改的场景。

这是为了节省功耗/风扇在弱显卡上的功能,而不是在不需要时连续渲染。

以上是实现这一目标的合适策略 - 即。是否有可能暂停" 3D渲染?

1 个答案:

答案 0 :(得分:1)

您的应用应对用户输入或其他特定事件做出反应。仅在数据更改时更改缓冲区。仅在用户移动相机时更新矩阵。

你可以画成一个FBO,然后将它blit到" normal"帧缓冲区。这样,如果没有发生变化,只需要进行blitting。

你也可以避免GPU blitting。使用contentView从该FBO获取位图,并使用OS API(即使用设备上下文)通过CPU使用而不是GPU 1将位图blit到窗口中。