我有一个GL_QUAD_STRIP,我是纹理贴图。四边形条带会折叠回自身以形成UV球体。从本质上讲,四边形通常不是由矩形组成的,而是由梯形组成的。
我遇到了纹理失真问题。纹理坐标是正确的(例如,它们在应该对齐的地方排列得很好)。问题出在梯形面本身。
我希望梯形面较大一端的纹理元素会覆盖更大的区域,但这张脸似乎被分成了两个三角形。它看起来类似于仿射纹理贴图(但我不认为它是;它看起来仍然是透视正确的,而且我也不希望它被使用)。
我知道显卡通常会在内部将四边形缩小为三角形,但我不认为这会影响纹理。。。
所以我不知道这是怎么回事。有什么想法吗?
这是一个不受欢迎的行为的示例。低分辨率全局纹理,最近过滤,无mipmap或各向异性:
发布于 2012-05-31 14:25:58
这是对简单四边形进行纹理处理时的经典问题。这是由于一个事实(就像你猜对的那样),四边形被分解成单独的三角形。这些三角形依次独立地设置纹理。
问题是,三角形内部的纹理坐标是从顶点线性插值的(虽然透视是正确的,但这在这里没有帮助)。你可以把它想象成光栅化器不知道这个梯形的第四个顶点,它只看到单独的三角形。因此,它假设三角形到纹理空间的变换是完全仿射的,因此三角形是平行四边形的一部分。
要解决这个问题,你需要做的是从简单的2D仿射纹理空间转移到投影纹理空间,使用完整的4维纹理坐标,而不是简单的2D纹理坐标,就像here解释的那样。你基本上做了GL已经做的透视校正插值,但使用你自己的透视投影纹理坐标(除了已经为顶点位置做的透视投影之外)。
发布于 2012-05-31 13:05:11
每个部分在正面渲染时是否正确渲染(以便完全为正方形)?
您可以在渲染之前尝试执行以下命令:
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
GL_PERSPECTIVE_CORRECTION_HINT表示颜色、纹理坐标和雾坐标插值的质量。如果GL实现不能有效地支持透视校正的参数插值,则提示GL_DONT_CARE或GL_FASTEST可以导致颜色和/或纹理坐标的简单线性插值。
https://stackoverflow.com/questions/10832909
复制相似问题