是否可以将 GLSL 变量传递给 javaScript。

Is it possible to pass a GLSL variable to javaScript.

我看到您可以将变量从 javaScript 传递到 GLSL,但是否可以反过来。基本上我有一个着色器,可以根据 alpha 通道将纹理转换为红色、绿色和蓝色 3 种颜色。

if (texture.a == 1.0) {
    gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);    
}
if (texture.a == 0.0) {
    gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0);
    call0nce = 1;
}
if (texture.a > 0.0 && texture.a < 1.0) {
    "gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);", 
}

我一直在使用颜色来帮助更好地形象化事物。我真正想做的是选择一个 alpha 为 1.0 的随机点和一个 alpha 为 0.0 的随机点,并以我可以从 javaScript 访问它们的方式输出两者的纹理坐标。我该怎么做?

您不能直接将值从 GLSL 传回 JavaScript。 GLSL,至少在 WebGL 1.0 中,只能将像素输出到纹理、渲染缓冲区和后备缓冲区。

您可以通过调用 gl.readPixels 来读取像素,因此您可以通过写入您想要的值然后调用 gl.readPixels.[= 间接将数据从 GLSL 返回到 JavaScript 12=]