【发布时间】: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...
【问题讨论】: