Создайте текстуру 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);