简单的问题,但我无法在任何地方的规范中找到答案.我可能在某个地方错过了明显的答案.
我可以在WebGL片段着色器中一次使用多少个纹理?如果它是可变的,那么PC使用的合理数量是多少?(对手机不太感兴趣).
我需要在其中一个着色器中至少有23个,所以想知道在开始处理代码之前我是否能够做到这一点,或者我需要做多次传递.
我很确定你能找到答案
var maxTexturesInFragmentShader = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);
Run Code Online (Sandbox Code Playgroud)
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));
Run Code Online (Sandbox Code Playgroud)
当然你可能需要转换设置过滤没有mips等...