翻转顶点着色器(GLES)

16

给定下面的顶点着色器,最简单、最有效和最快的方法是什么,可以将坐标倒置,使片段着色器生成一个上下颠倒的图像?

attribute vec4 a_position;
attribute vec2 a_texcoord;                                                  
varying vec2 v_texcoord;

void main()
{
    v_texcoord = a_texcoord.st;
    gl_Position = a_position;
}

顶点位置坐标还是纹理坐标?此外,将其放入用于这些位置变换的转换中不是更有意义(假设您打算进行一些变换)? - Nicol Bolas
1个回答

26

只需翻转v_texcoord。例如:

v_texcoord = a_texcoord.st * vec2(1.0, -1.0);

或者,我猜:
v_texcoord = vec2(a_texcoord.s, 1.0 - a_texcoord.t);

根据您想要对.t范围发生的具体情况而定。


3
太好了!使用“vec2(a_texcoord.s, 1.0 - a_texcoord.t)”非常棒,而且效果完美。 - PerracoLabs
1
v_texcoord = vec2(a_texcoord.s, 1.0 - a_texcoord.t); - 简单而美妙的解决方案,谢谢。 - hbk
v_texcoord = vec2(a_texcoord.s, 1.0 - a_texcoord.t); 运行正常。 - Raydelto Hernandez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接