GL_TEXTURE1 multi-architecture released on WebGL

I am studying the use of multitexture on WebGL. I have the following shader code snippets:

uniform int flag; uniform sampler2D texture0; uniform sampler2D texture1; varying vec2 v_texCoord; void main() { vec2 texCoord = vec2(v_texCoord.s, 1.0 - v_texCoord.t); vec4 texel0 = texture2D(texture0, texCoord); vec4 texel1 = texture2D(texture1, texCoord); if (1 == flag) { gl_FragColor = texel1; } else { gl_FragColor = texel0; } } 

Also, my JavaScript code snippets:

 gl.uniform1i(gl.getUniformLocation(gl.program, "flag"), 1); gl.uniform1i(gl.getUniformLocation(gl.program, "texture0"), 0); // Texture Unit 0 gl.uniform1i(gl.getUniformLocation(gl.program, "texture1"), 1); // Texture Unit 1 // Activate 2 textures gl.enable(gl.TEXTURE_2D); gl.activeTexture(gl.GL_TEXTURE0); gl.bindTexture(gl.TEXTURE_2D, photoTexture0); gl.activeTexture(gl.GL_TEXTURE1); gl.bindTexture(gl.TEXTURE_2D, photoTexture1); 

PhotoTexture1 (texture1) is displayed in black only on the screen. I can display photoTexture0 (texture0) correctly. It looks like photoTexture1 (texture1) is not showing in the shader.

Since the code above does not work, and I am new to this, I am interested that I did something wrong and / or I misunderstood the concept of multitexture.

Any help is appreciated. Thanks in advance for your help.

NOTE. Cross-record at http://www.khronos.org/message_boards/viewtopic.php?f=43&t=3357&p=8858#p8858

+4
source share
1 answer

I found and fixed the problem

 gl.activeTexture(gl.TEXTURE0); // remove the "GL_" on GL_TEXTURE0 gl.bindTexture(gl.TEXTURE_2D, photoTexture0); gl.uniform1i(gl.getUniformLocation(gl.program, "texture1"), 0); gl.activeTexture(gl.TEXTURE1); // remove the "GL_" on GL_TEXTURE1 

I cut out "GL_TEXTURE0" from an example written in C.

+5
source

Source: https://habr.com/ru/post/1332456/


All Articles