我终于开始了解 shaders 方面了,而且我几乎能自己写shader了。我终于明白了vec的工作原理,至少有一些方面。我想说我理解基本概念了。所以,我想实现是反转一个精灵的颜色。我查了一下,谷歌AI立即输出了一个shader给我,但我想尝试自己实现它。这个过程并且不难,我只需取1.0并减去v_vColor的RGB值即可。所以,我尝试了,但它没有工作...它只是使所有东西都变成了黑色。所以,我检查了AI的实现,它看起来几乎与我的实现相同。我尝试使用AI的代码,它完美地工作了。我现在有了一个工作的shader,但如果我想要自己实现的,还要研究一下我哪里做错了。所以,AI做错了什么地方?

我的代码是:

void main()
{
    vec4 base_col = vec4(1.0 - v_vColour.r, 1.0 - v_vColour.g, 1.0 - v_vColour.b, v_vColour.a);

    gl_FragColor = base_col * texture2D( gm_BaseTexture, v_vTexcoord );
}

而AI的代码是:

void main()
{
    vec4 base_col = v_vColour * texture2D( gm_BaseTexture, v_vTexcoord );

    gl_FragColor = vec4(1.0 - base_col.rgb, base_col.a);
}