在Opengl增加相机远距离

时间:2016-02-18 10:09:07

标签: c++ opengl glsl glm-math

我在3ds Max中生成了一个大小为10k×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

1 个答案:

答案 0 :(得分:1)

真实相机没有近距离和远距离剪裁平面。由于数值精度问题,虚拟相机需要它们。将近处和远处的平面设置为极值来模拟真实的相机很有吸引力,但这会使对象失败。平面之间的范围越小,您将获得的伪像越少,并且它们应设置为略微超出实际对象的范围。

(如果您确实需要天空中的两架飞机和同一镜头中的叶子上的虫子,请通过使用不同的相机设置绘制两次来伪造它)。