c++ - 在 Opengl 中增加相机远距离

标签 c++ opengl glsl glm-math

我有一个在 3ds Max 中生成的地形网格,大小为 10k x 10k。我的问题是远剪裁只是关闭,我看不到我想要的。我正在尝试实现雾着色器,但我现在看到的效果不佳。

我的相机构造函数是这样的

Camera::Camera():
    cameraPosition_(glm::vec3(-1.0f, 1000.0f, 20.0f)),
    cameraLook_(glm::vec3(0.0f, 800.0f, 200.0f)),
    lookAt_(glm::lookAt(cameraPosition_,
                        cameraLook_,
                        WORLD_YAXIS)),
    near_(0.1f),
    far_(10000.0f),

    projection_(glm::perspective(
        70.0f,
        4.0f / 3.0f,
        near_,
        far_)),
    name_("Default Camera") 
{
}

结果看起来像这样 enter image description here

最佳答案

真实的相机没有远近裁剪平面。由于数值精度问题,虚拟相机需要它们。将近平面和远平面设置为极值以模拟真实相机很诱人,但这会破坏对象。平面之间的范围越小,您得到的伪像就越少,它们应该设置为略微超出实际对象的范围。

(如果您确实需要在同一张照片中既需要天空中的飞机又需要叶子上的 bug ,请使用不同的相机设置绘制两次来伪造它)。

关于c++ - 在 Opengl 中增加相机远距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35478443/

相关文章:

c++ - BLAS 是如何获得如此极致的性能的?

c++ - 使用 QT 和 OpenGL 编译 C++ 应用程序时出现问题

c# - 顶点属性缓冲区绑定(bind)到错误的属性

c++ - OpenGL 谷歌地图样式 2D 相机/缩放到鼠标光标

opengl - 片段着色器 GLSL 中未使用的可变变量 - 它们会伤害性能吗

javascript - 提高 threejs/shader 几何体的 UV 线质量

c++ - DLL_PROCESS_ATTACH 无法在 Windows 7 C++ 上执行

c++ - 考虑到\r\n

c++ - vector 中的C++ push_back

c++ - opengl 使用 glm 单独旋转一个对象