有人能告诉我这两个片段着色器有什么区别吗:
// Adobe's GPUSprite Fragment Shader
"tex ft0, v0, fs0 <2d,clamp,linear,mipnearest> \n" +
"mul ft0, ft0, v0.zzzz\n" + // multiply with alpha??
"mov oc, ft0 \n"
// Node2D Fragment Shader
"tex ft0, v0, fs0 <2d,clamp,linear,mipnearest> \n" +
"mul ft0, ft0, fc0\n" + // this line is different
"mov oc, ft0 \n"
只有第二行不同,我们将它与 alpha 相乘。因此,第二个着色器(Node2D)允许您通过setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, [1,1,1,1]);传入主 alpha 值。调用,这将导致使用该 alpha 绘制所有三角形。
1)有人可以告诉我第二行发生了什么吗?
2)以上在实践中所做的是,它覆盖了每个三角形的各个 alpha 设置。我想要的是将它自己的 alpha 与着色器相乘,这样最终的 alpha 值将是 = Triangle_alpha * Shader_alpha。
(因为现在我无法使用第二个着色器为特定三角形设置单独的 alpha 值。我想要的是能够分别为每个三角形设置一个 alpha 值,并为整个 drawTriangles 调用设置另一个)