我正在将 16 位图像的 z 堆栈读入 javascript(即图像数组)。我是 webgl 着色器的新手,我在如何遍历数组时遇到问题。
我希望将整个可变长度的图像列表(最多数百个)放到 GPU 上。然后,随着 z-stack 的每次变化,GPU 将渲染新图像。目前,我有以下内容:
<script id="shader-vertex" type="x-shader/x-vertex">
attribute float a_fluxes;
varying float v_flux;
attribute vec2 a_position;
uniform vec2 u_resolution;
void main() {
vec2 zeroToOne = a_position / u_resolution;
gl_Position = vec4((zeroToOne * 2.0 - 1.0) * vec2(1, -1), 0, 1);
v_flux = a_fluxes/256.;
}
</script>
<script id="shader-fragment" type="x-shader/x-fragment">
precision highp float;
varying float v_flux;
void main() {
gl_FragColor = vec4(v_flux, v_flux, v_flux, 1);
}
</script>
图像的 3 维数组(x、y 和 z)应该被转换为进入 a_fluxes 的一维列表。
如何迭代 z 图像之一的 x 和 y 维度?我是使用循环在顶点着色器中迭代还是需要将像素的所有可能的 x,y 坐标的数组传递给顶点着色器?我真的应该在片段着色器上进行这些计算吗?