我有3个对象:
我想画:
在片段着色器中,我使用了
FragColor = Color*texture2D(u_texture, TextureCoordinates)
像往常一样,但是此代码还用纹理颜色绘制了我的第一个立方体,我希望它仅是红色。因此颜色混在一起。我的问题是我应该在片段着色器中编写逻辑以分开这些情况吗?
答案 0 :(得分:2)
创建具有单一(白色)颜色的1x1纹理并将其用于均匀的彩色立方体。 绑定和使用此纹理比更改着色器程序更“便宜”:
let whiteTexture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, whiteTexture);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE,
new Uint8Array([255,255,255,255]));
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
请注意,对此纹理(texture2D(u_texture, TextureCoordinates)
)的查找将始终返回vec4(1.0)
。
如果纹理被绑定(绑定到分配给u_texture
的纹理单元),则
FragColor = Color * texture2D(u_texture, TextureCoordinates);
将设置与片段相同的颜色
FragColor = Color * vec4(1.0);