我绘制了一个带纹理的梯形,但结果并没有像我原先想象的那样出现.
不是出现在单个完整的四边形上,而是在对角线处出现不连续性,其中两个包括三角形相交.
此图显示了此问题:

(注意:最后一张图片不是100%忠实的表示,但它应该得到重点.)
使用GL_TRIANGLE_STRIPOpenGL ES 2.0(在iPhone上)绘制梯形.它被完全面向屏幕绘制,并且没有被倾斜(即,这不是您正在看到的3D草图!)
我已经明白我需要执行"透视校正",大概是在我的顶点和/或片段着色器中,但我不清楚如何做到这一点.
我的代码包含一些简单的模型/视图/投影矩阵数学,但它们当前都没有影响我的纹理坐标值.更新:根据用户infact的评论,前一个语句不正确.
此外,我在ES 2.0规范中找到了这个小窍门,但不明白它意味着什么:
不支持PERSPECTIVE CORRECTION HINT,因为OpenGL ES 2.0要求对所有属性进行透视插值.
如何正确绘制纹理?
编辑:添加以下代码:
// Vertex shader
attribute vec4 position;
attribute vec2 textureCoordinate;
varying vec2 texCoord;
uniform mat4 modelViewProjectionMatrix;
void main()
{
gl_Position = modelViewProjectionMatrix * position;
texCoord = textureCoordinate;
}
Run Code Online (Sandbox Code Playgroud)
// Fragment shader
uniform sampler2D texture;
varying mediump vec2 texCoord;
void main()
{
gl_FragColor = texture2D(texture, texCoord);
}
Run Code Online (Sandbox Code Playgroud)
// Update and Drawing code (uses GLKit helpers from iOS)
- …Run Code Online (Sandbox Code Playgroud)