4
我正在學習在WebGL上使用多紋理。我有以下着色器的代碼片段:WebGL上的多紋理GL_TEXTURE1問題
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;
}
}
而且,我的JavaScript代碼片段:
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)只在屏幕上顯示黑色。我可以正確顯示photoTexture0(texture0)。看起來photoTexture1(texture1)在着色器中不可見。
由於上面的代碼不起作用,我對此很感興趣,所以想知道我是否做錯了什麼,或者我誤解了multitexture的工作原理。
任何幫助表示讚賞。在此先感謝您的幫助。
注:跨崗位上http://www.khronos.org/message_boards/viewtopic.php?f=43&t=3357&p=8858#p8858
WebGL不在TEXTURE0,TEXTURE1等上使用前綴「GL_」。請參閱https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/上的WebGL規範支持WebGL spec.html – pion 2010-12-18 13:56:32