OpenGL对象和相机阻力?

Posted

技术标签:

【中文标题】OpenGL对象和相机阻力?【英文标题】:OpenGL object & camera resistance? 【发布时间】:2011-12-13 23:50:55 【问题描述】:

我正在开发一个非常基本的 C++ 与 openGL 和 GLUT,您可以在其中移动“相机”作为播放器。

简而言之:

当我看雪人时,我的相机变慢了

完整解释:

一切都很好,直到我最终决定添加一个对象(实际上是一个巨大的雪人),但现在我添加了它,我遇到了非常奇怪的行为。

如果我看着雪人物体并试图向前移动,感觉就像我在对抗一种力量,好像我在泥泞中行走。

现在如果我面对雪人,并用相机向后“走”,它完全可以移动,但是当我看着它时......我放慢了速度。我试过不同尺度的雪人,雪人越大越能感受到效果。

不过请注意,这似乎不会导致我落后,只会放慢速度。

任何见解都将不胜感激,如果需要,我会发布代码,但目前..我不知道什么代码是相关的!

【问题讨论】:

听起来你可能会遇到parallax effect。 【参考方案1】:

当你说它变慢时,你的意思是你的帧速率下降?听起来你的雪人很重多边形,当它被渲染时,它会导致帧速率下降,从而减慢速度。

当您背对正在修剪的雪人时,它不在视野范围内,因此构成模型的多边形不会一直通过 3D 管道发送。

如果您没有打开背面剔除,您可能会想要这样做 - 否则您可能需要稍微简化模型。如果你在那里渲染一个立方体会发生什么?

根据您使用的硬件,如果您没有很高的填充率(硬件填充渲染缓冲区中像素的速度),即使是低多边形模型也可能会导致问题,但鉴于它是一个模型并且硬件应该能够超过一次填充屏幕,我会说这是一个不太可能的情况。

【讨论】:

是的,可能就是这样。我在一个名为 GLRex 的程序中设计了雪人,它就像一个原始编辑器。即使我把雪人做得很小,仍然有一些迟缓的元素:(。我尝试了一个巨大的空心立方体,它根本没有减速。有任何方法我可以减少聚的但保留原来的雪人?谢谢! 这取决于 GLRex 提供的内容,我从未遇到过它,但它应该允许您为与细分数量等相关的基元指定参数。将所有数字调低,以便它看起来可以接受,但不是由数千个多边形组成的 :) 很遗憾,因为 GLRex 是一个由个人创建的简单形状编辑器,仅提供形状、大小和 NURB 选项 :(。无论如何感谢您的帮助,非常有用。 也许看看使用 GLUT - 它可以让您在代码中动态生成原语。或者,当然,找另一个建模师 :) 我怀疑这些球体是使用曲线或其他东西计算的,当图形硬件必须渲染它们时,它会进行细分并用三角形近似形状。听起来它正在创建大量的三角形!

以上是关于OpenGL对象和相机阻力?的主要内容,如果未能解决你的问题,请参考以下文章

在OpenGL中使对象跟随相机

OpenGL制作物面相机

相机倒置OpenGL

openGL - 我希望相机更接近物体,如何?

如何将 OpenGL 对象添加到 SurfaceView 相机中?

Java OpenGL - 如何使对象随相机旋转?