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

标签 c++ opengl 3d clipping glm-math

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

Zoomed In

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

Zoomed Out

滚动出十字路口会随机困惑,我无法解释发生了什么,也不知道我的问题出在哪里。 这是我计算投影矩阵的方式:

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

这是我计算 View 的方式:

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

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

最佳答案

看起来你没有足够的深度分辨率。当 nearPlane 非常小而 farPlane 非常大时,会发生这种情况。例如,0.0001 到 10000.0 将为您提供低深度分辨率。

使 nearPlane 变大,farPlane 变小。

关于c++ - GLM opengl 裁剪问题 - Game Engine c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35299880/

相关文章:

c++ - 类型检测器 `hasNestedType` 没有编译?

c++ - 无法使方法存在检测机制起作用

c++ - OpenGL 纹理不会映射 - 白色方 block ?

opengl - 每个 VBO 都需要一个 VAO 吗?

Python:用 3D bool 索引 3D 数组并返回相同大小的 3D 数组......优雅

c# - C# 应用程序中 C++ 模块的探查器

c++ - CUDA 链接错误(Lib 到 Dll)

c++ - 使用 glm 的旋转功能时预期的旋转方向是什么?

css - 绕 Y 轴旋转而不改变位置

c++ - 这个 operator[] 函数的实现是如何工作的?