2
我正在读取一个由16位图像组成的z-stack(即图像数组)。我是webgl着色器的新手,我遇到了如何遍历数组的问题。我在哪个webgl着色器将数组转换为图像
我希望将整个可变长度的图像列表(最多可达数百个)放到GPU上。然后,随着z堆栈中的每次更改,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>
图像(X,Y,和z)的3维阵列应该被转换成一维列表进入a_fluxes。
如何迭代z图像之一的x和y尺寸?我是否使用循环迭代顶点着色器,还是需要将所有可能的像素x,y坐标数组传递给顶点着色器?我真的应该在片段着色器上进行这些计算吗?
您不会遍历x,y坐标,而且您不希望:否则,该工作将如何在GPU单元之间分配?循环并不总是容易分开。 OpenGL将这些工作划分为单元并为您迭代。至于如何最好地处理这种情况,那么这超出了我目前的新手经验。 – JayC 2013-02-14 05:32:58