Opengl透视失真

Wil*_*Kru 10 opengl textures distortion perspective

我有这个奇怪的问题,我希望有人可以为我清除这一点,这样我就可以理解错误并采取相应的行动.在OpenGL(固定功能)中,我在正交投影中渲染具有内面的管.

下图显示了结果.它由4个顶点环组成,这些顶点使用左侧所示的索引模式形成三角形.为方便起见,我在管上编号顶点.右边是使用的纹理:

在此输入图像描述

正如您所看到的,纹理严重扭曲.当我最初创建仅有2个顶点环的管时,我认为提高环的数量可以解决失真但没有快乐.glHint似乎也没有影响这个特定的问题.

纹理坐标似乎没问题.此外,检查器模式似乎正确呈现,但我想失真在那个非常特定的模式中是不可见的.

请忽略交叉线,因为其中一条是不存在的边缘; 我通过GL_LINE_LOOP渲染了线框.

dat*_*olf 2

这种特殊的效果是由纹理坐标在三角形中插值的方式引起的。发生的情况是,一个方向成为主要组成部分,而另一个方向则倾斜。你的标本恰好很容易出现这种情况。这也恰好是地板或墙壁上的透视投影和纹理的问题。您需要的是所谓的“透视正确纹理”PCT。有一个glHint,但我想,你已经尝试过了。

坦率地说,避免这种情况的唯一方法是细分应用透视校正。但幸运的是,这对于基于四边形的几何图形(如您的几何图形)来说很容易。细分边缘时,沿所有 4 条边缘在细分中心处插值纹理坐标,并使用其中 4 条边缘的平均值。仅沿着一个边缘插值纹理坐标正是您想要避免的。

如果您想保持几何数据不变,您可以在片段着色器中实现 PCT。