gpt4 book ai didi

opengl - 可以只在 opengl 中移动相机而不重绘场景吗?

转载 作者:行者123 更新时间:2023-12-05 08:44:28 25 4
gpt4 key购买 nike

我正在 opengl 中创建一个渲染成本非常高的场景(使用顶点缓冲对象),当所有对象都留在原地时,我想做一些类似于“平滑追踪”对象的事情。即:将物体留在原处,并以一定的恒定速度向左或向右移动相机/视点。目前,我通过在我的 draw 函数中调用 glTranslatef 来完成此操作,然后调用重新绘制所有对象的代码。然而,这是非常昂贵的(很多对象!)。有没有办法只移动相机,而无需重新绘制整个场景?

最佳答案

OpenGL 中没有相机。或者如果你真的想认为有,那么你必须意识到“相机”在 OpenGL 中停留在原点,始终朝同一个方向看。 “相机”效果是通过移动和旋转世界中的所有对象来模拟的,而“相机”位于原点。

所以如果你想移动“相机”,你真的必须移动世界(或世界中的所有物体)。换句话说,确实没有办法“在不重绘所有对象的情况下移动相机”。如果您确实需要,一种选择是将场景渲染为大于屏幕的纹理,然后四处移动纹理以模拟“相机”移动。请注意,如果您使用的是透视投影,那么执行此操作时看起来会很不对劲。如果您使用的是正交投影,这只会看起来不错。

但是,听起来您是在即时模式下绘图,这是一种古老而缓慢的方法。您应该使用带有着色器和顶点数组对象/顶点缓冲区对象的现代绘制调用。

关于opengl - 可以只在 opengl 中移动相机而不重绘场景吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9893712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com