我遇到了网格中仿射变换四边形的问题,因此错误的纹理坐标插值。我相信在固定功能管道中你可以设置下面的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...
答案 0 :(得分:0)
我被误导了固定功能管道中glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
的用途。我被告知这个提示应该可以防止我们上面看到的错误。我自己在固定功能管道中测试了它,结果证明提示只是控制顶点变换的透视正确性。
因此,为了解决上述问题,除了提供投影纹理坐标之外,没有任何解决方案,这是我所联系的大多数其他SO问题的解决方案。
我向reddit发布了相同的问题并收到了令人满意的解释,来源:http://www.reddit.com/r/opengl/comments/1ral2k/perspective_correct_texture_mapping/cdlhw04