我可以在webgl片段着色器中使用多少纹理?

时间:2013-12-30 08:43:07

标签: webgl

简单的问题,但我无法在任何地方的规范中找到答案。我可能在某个地方错过了明显的答案。

我可以在WebGL片段着色器中一次使用多少个纹理?如果它是可变的,那么PC使用的合理数量是多少? (对手机不太感兴趣)。

我需要在其中一个着色器中至少有23个,所以想知道在开始编写代码之前我是否能够这样做,或者我需要多次传递。

2 个答案:

答案 0 :(得分:6)

我很确定你能找到

var maxTexturesInFragmentShader = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);

WebGL(OpenGL ES 2.0)仅需要8个片段着色器的最小值。

请注意,您可以访问的纹理数量与您可以访问1个纹理的次数是分开的。因此,例如,如果您只想使用1个纹理单元访问2个纹理,则组合纹理并调整UV坐标。例如,将2个纹理[A]和[B]的内容并排放入一个纹理[AB]然后

vec4 colorFromTexA = texture2D(samplerAB, uvForTexA * vec2(0.5, 1.0));
vec4 colorFromTexB = texture2D(samplerAB, uvForTexB * vec2(0.5, 1.0) + vec2(0.5, 0.0));

当然你可能需要将没有mips的设置过滤等等......

答案 1 :(得分:4)

您可以在http://webglstats.com/webgl/parameter/MAX_TEXTURE_IMAGE_UNITS

找到答案

似乎你运气不好,因为统计数据显示大多数人只有16岁。