GLM opengl 裁剪问题 - Game Engine c++

Posted

技术标签:

【中文标题】GLM opengl 裁剪问题 - Game Engine c++【英文标题】:GLM opengl clipping issues - Game Engine c++ 【发布时间】:2016-05-19 21:36:36 【问题描述】:

我目前正在开发我的游戏引擎,我遇到了一些我自己无法解决的问题。我改变了关于建立自己的数学库的想法,所以我重新使用 GLM,因为它是一个完美的解决方案。 但是问题来了,我的代码一切正常,但现在改变了功能,我遇到了对象裁剪和交集的问题。

Zoomed In

第一张图片显示了我的场景在放大后的样子。一切看起来几乎完美,并且平面与立方体正确相交。

Zoomed Out

滚动出交叉点会随机混乱,我无法解释发生了什么,也不知道问题出在哪里。 这是我计算投影矩阵的方式:

proj = glm::perspective((double)fovy, (double)aspect, (double)nearPlane,(double) farPlane);

这是我计算视图的方式:

view = glm::lookAt(pos, tar, gameObject->transform.getUp());

我知道我应该发布更多代码,但是我真的不知道从哪里开始。所以请告诉我哪些代码可能很重要,我会发布它。非常感谢你,我希望有人能帮助我。如果需要更多图片,请告诉我。

【问题讨论】:

【参考方案1】:

您的深度分辨率似乎不够。当nearPlane 非常小而farPlane 非常大时,就会发生这种情况。例如,0.0001 到 10000.0 的深度分辨率较低。

使nearPlane 更大,farPlane 更小。

【讨论】:

哇,谢谢,我以前试过这个,但我想我没能正确调整它。非常感谢!我现在将值设置为 1.0f 和 1000.0f,它似乎可以工作。谢谢!

以上是关于GLM opengl 裁剪问题 - Game Engine c++的主要内容,如果未能解决你的问题,请参考以下文章

旋转矩阵的问题(openGL/glm)[关闭]

Model, View(Camera), Perspective

OpenGL - GLM 和 GLSL,它们有何不同?

我的OpenGL学习进阶之旅OpenGL ES开发如何引入GLM(OpenGL Mathematics)库?

OpenGL的GLM库没有幅度函数吗?

OpenGL - 使用 glm 围绕 2 个轴旋转