2013-11-23 47 views
0

我运行到仿射变换四边形的问题,网状,因此纹理坐标错误插补。我相信,在固定管线,你可以只设置folloing glHint:我是否需要4D纹理坐标才能在opengl中实现透视正确的纹理贴图?

​​

但看这似乎是过时的文档。 所以我想没有更多的“简单”解决方案来做到这一点,我需要指定我所有的纹理坐标作为4D向量?

此外,这是否意味着,如果我想加载网仅指定此2D纹理坐标我需要手动检测四边形和正确的吗?下面

所述的图像显示上做出来的4片环面我的问题。 Example from my program, a torus made out of 4 slices

我也尝试在我的着色器中使用插值限定符,如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

回答

0

我被误导什么glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);在固定用于功能管道。我被告知这个提示应该可以防止我们上面看到的错误。我已经在固定功能流水线中自己测试了它,结果是提示只是控制顶点转换的透视正确性。

因此,要解决以上问题,没有比提供投影纹理坐标,这是大多数其他SO问题我已经挂谈谈解决方案之外的任何解决方案。

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