Създайте текстура 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);
person
Rabbid76
schedule
21.01.2019