Graphics 渲染循环与显式调用更新方法

Graphics 渲染循环与显式调用更新方法,graphics,3d,rendering,Graphics,3d,Rendering,我正在使用openGL开发一个3D模拟程序,它使用一个固定帧速率的渲染循环来保持屏幕随着世界的变化而更新。真正的标准程序,对于一个典型的视频游戏来说,这无疑是我最初从openGL游戏教程中获取这段代码的最佳方法。但对我来说,3D场景的变化不会像电脑游戏那样迅速和不可预测。3D场景本身可能会不时更改,但一般来说,在渲染调用之间不会更改,它更像是几何问题的可视化工具。用户将能够控制相机的位置/方向,但通常情况下,相机会在几秒钟/分钟内无法移动,可能会有数百次渲染调用,而且由于3D场景可能在大部分时间

我正在使用openGL开发一个3D模拟程序,它使用一个固定帧速率的渲染循环来保持屏幕随着世界的变化而更新。真正的标准程序,对于一个典型的视频游戏来说,这无疑是我最初从openGL游戏教程中获取这段代码的最佳方法。但对我来说,3D场景的变化不会像电脑游戏那样迅速和不可预测。3D场景本身可能会不时更改,但一般来说,在渲染调用之间不会更改,它更像是几何问题的可视化工具。用户将能够控制相机的位置/方向,但通常情况下,相机会在几秒钟/分钟内无法移动,可能会有数百次渲染调用,而且由于3D场景可能在大部分时间都是静态的,我想知道我是否真的需要一个连续的渲染循环

我的想法是,我将删除自动渲染循环,相反,当

3D场景的变化非常罕见 这架照相机很少移动 由于我将主要用于研究目的,场景/摄影机可能一次处于一种状态几分钟,并且在帧缓冲区不变的情况下不断更新帧缓冲区似乎很愚蠢

那么,我的问题是,这是一个好办法吗?所有3D图形渲染的在线教程似乎都涉及游戏设计,但这并不是我真正的要求。换句话说,使用渲染循环与在发生更改时手动调用更新相比,有哪些优点和缺点


谢谢

这种方法没有问题,事实上许多3D应用程序(如3DS MAX)都使用显式渲染。您只需选择更适合您的需要的内容,在大多数游戏中,场景会更改每一帧,因此最好使用更新循环,但如果您正在进行一些国际象棋游戏,没有动画UI,您也可以仅在场景更改时使用显式渲染

对于具有罕见更改的应用程序,如3DS或Blender,最好仅在更改时调用渲染。这样既节省了CPU/GPU,又省电,而且您的电脑不会发热太多

通过显式渲染,还可以使用一些性能技巧,例如在摄影机移动时绘制简化场景,以获得更好的性能。然后,当摄影机停止时,再次在背景中渲染整个场景,并用新的渲染替换低质量的渲染