因此,当在OpenGL上绘制一个矩形时,如果给出矩形纹理坐标为(0,0),(1,0),(1,1)和(0,1)的角,那么你就可以了。我会得到标准的矩形。
但是,如果你把它变成不是矩形的东西,你会得到一种奇怪的拉伸效果。如下所示:
我从下面this page看到这可以修复,但给出的解决方案仅适用于梯形值。此外,我必须通过许多矩形来做这件事。
所以,问题是,什么是正确的方法,以及最有效的方法来获得正确的" 4D"绘制拉伸四边形的纹理坐标?
答案 0 :(得分:0)
允许实现将四边形分解为两个三角形,如果将其可视化为两个三角形,您可以立即看到它为什么以它的方式插入纹理坐标。纹理映射是正确的...... 用于两个独立的三角形。
投影纹理可以帮助您已经知道,但最终这里的真正问题是简单地插入两个三角形而不是单个四边形。您会发现修改Q
坐标可能帮助将纹理映射到四边形上,插入其他属性(如颜色)仍会存在严重问题。
如果您可以访问片段着色器和实例化顶点数组(可能排除了OpenGL ES),则可以完全实现四边形顶点属性插值here。 (您可以修改着色器以在没有“实例化数组”的情况下工作,但它需要在顶点数组或几何着色器中使用4倍的数据)。
顺便说一下,OpenGL中的纹理坐标总是“4D”。如果您使用glTexCoord2f (s, t)
之类的内容,r
已分配 0.0 且q
已分配 1.0 ,则会发生这种情况。该行为适用于所有顶点属性;无论是否明确定义所有4个坐标,顶点属性都是4D。