【问题标题】:Do I need 4D texture coordinates to achieve perspective correct texture mapping in opengl?我是否需要 4D 纹理坐标才能在 opengl 中实现透视正确的纹理映射?
【发布时间】:2013-11-23 11:35:52
【问题描述】:

我遇到了网格中仿射变换四边形的问题,因此纹理坐标插值错误。我相信在固定功能管道中,您可以设置以下 glHint:

glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);

但是查看文档,这似乎已被弃用。 所以我想没有更多“简单”的解决方案可以做到这一点,我需要将所有纹理坐标指定为 4D 矢量?

另外这是否意味着如果我想加载一个只指定 2D 纹理坐标的网格,我需要手动检测四边形并对此进行纠正?

下图显示了我在由 4 个切片组成的圆环上的问题。

我还尝试按照 Nicol Bolas here 的建议在我的着色器中使用插值限定符。

虽然我相信平滑是默认设置。这对我的输出没有影响。

关于如何进行透视正确纹理映射的问题在 SO 上已多次出现。但我问是否没有更简单的解决方案。关于为什么固定功能管道能够为您做到这一点,我个人的结论是因为 GL_QUADS。而且我觉得指定 4D 纹理坐标是核心配置文件中唯一的解决方案。

以下是有关该主题的一些链接,用于解释 4D 坐标的工作原理:

Getting to know the Q texture coordinate...

perspective-correct-texturing-of-trapezoid-in-opengl-es-2-0

correct-glsl-affine-texture-mapping

【问题讨论】:

    标签: texture-mapping opengl-3


    【解决方案1】:

    我被错误地告知glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); 在固定功能管道中的用途。有人告诉我,这个提示应该可以防止我们在上面看到的错误。此后我自己在固定函数管道中对其进行了测试,结果表明该提示仅控制顶点变换的透视正确性。

    因此,要解决上述问题,除了提供投影纹理坐标之外没有其他解决方案,这是我链接到的大多数其他 SO 问题所讨论的解决方案。

    我在 reddit 上发布了同样的问题,并收到了令人满意的解释,来源:http://www.reddit.com/r/opengl/comments/1ral2k/perspective_correct_texture_mapping/cdlhw04

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-07
      • 2012-08-31
      • 1970-01-01
      • 2011-05-04
      • 2011-03-16
      • 1970-01-01
      相关资源
      最近更新 更多