【问题标题】:opengl mixed perspective and ortographic projectionopengl 混合透视和正交投影
【发布时间】:2015-08-08 10:58:43
【问题描述】:

如何在 OpenGL 中混合正交投影和透视投影? 必须在屏幕空间中绘制一些 2d 元素(无缩放、旋转等) 这些 2d 元素具有 z 位置,它们必须出现在其他 3d 元素的前面/后面。 所以我设置了地形投影,绘制所有 2d 元素,然后设置透视投影并绘制所有 3d 元素。 结果是所有 2d 元素都绘制在顶部。 orto 投影的 z 值和透视投影的 z 值似乎不兼容(GL_DEPTH_TEST)。

单独所有 2d 和所有 3d 元素都可以正常工作,问题是当我尝试混合它们时。 预投影是否会改变 z 值?以什么方式? 是否可以将 orto 投影的 z 值与透视投影的 z 值混合用于深度测试,或者整个概念有缺陷?

裸opengl1.5

【问题讨论】:

标签: opengl projection perspective


【解决方案1】:

orto 投影的 z 值和透视投影的 z 值似乎不兼容(GL_DEPTH_TEST)。

确实如此。透视变换将 Z 值非线性映射到深度缓冲区值。解决这个问题的常用方法是在透视传递到深度纹理后复制深度缓冲区,并将其用作正交绘制内容的片段着色器中的附加输入,反转深度输入中的非线性并比较传入的 Z与之协调;然后适当地丢弃。

也可以在透视绘制几何片段着色器中发出线性深度值,但是透视投影的深度非线性有其用途;没有它,您会在最重要的地方失去深度精度,接近视点。

【讨论】:

    猜你喜欢
    • 2013-11-26
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多