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

我正在开发一个使用openGL的3D模拟程序,该程序使用具有固定帧率的渲染循环来随着世界的变化保持屏幕更新。 标准程序真的,对于典型的视频游戏来说,这当然是最好的方法(我最初从openGL游戏教程中获得了这些代码)。 但对我而言,3D场景不会像在电脑游戏中那样迅速变幻莫测。 3D场景本身可能会随时发生变化,但通常它不会在渲染调用之间改变(它更像是一个几何问题的可视化工具)。 用户将能够控制摄像机的位置/方向,但通常会有几次摄像机不会移动几秒/分钟(可能有数百个渲染调用),并且由于3D场景可能是静态的大多数时候,我想知道我是否真的需要连续渲染循环...?

我的想法是,我将删除自动渲染循环,而是我会显式调用我的更新方法时,

  • 3D场景改变(非常罕见)
  • 相机移动(有点罕见)
  • 由于我主要将其用于研究目的,因此场景/相机一次可能保持一个状态几分钟,并且在帧缓冲区不变时不断更新帧缓冲区似乎很愚蠢。

    我的问题是,这是一个好方法吗? 所有关于3D图形渲染的在线教程似乎都涉及游戏设计,但那不是我的要求。 换句话说,使用渲染循环的优点和缺点与手动调用“update()”什么时候发生了变化?

    谢谢


    这种方法没有问题,事实上许多3D应用程序(如3DS MAX)都使用显式渲染。 你只需要选择更适合你的需求,大多数游戏场景会改变每一帧,所以最好有更新循环,但是如果你正在做一些国际象棋游戏,没有动画用户界面,你也可以在场景变化时使用显式渲染。

    对于具有罕见变化的应用程序,比如3DS或Blender,最好只在变更时调用渲染。 这样你可以节省CPU / GPU,但也可以节省电力,而且你的电脑不会变热。

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

    链接地址: http://www.djcxy.com/p/60423.html

    上一篇: Render loop vs. explicitely calling update method

    下一篇: Parallel graphics computing