テクスチャを使用したくない場合は、1x1 ピクセルの白いテクスチャを使用するのが最も簡単な方法です。
tex = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, tex);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE,
new Uint8Array([255, 255, 255, 255]));
それ以外の場合は、テクスチャを使用しない別のシェーダーが必要です。つまり、コードを介してさまざまなパスを管理することで、コードがより複雑になります。ただし、そのルートに進みたい場合は、シェーダーを見て、texture2D
それを色に置き換えます。たとえば、コードが
gl_FragCoord = texture2D(u_samplers, v_texcoord);
に変更します
gl_FragCoord = vec4(1,0,0,1); // just use red
または、それを設定できるようにしたい場合は、
uniform vec4 u_color;
gl_FragCoord = u_color; // get color from uniform
その色を次のように設定できるようになりました
// at init time
colorLocation = gl.getUniformLocation(program, "u_color");
// at draw time
gl.uniform4fv(colorLocation, [1, 0, 0, 1]); // set color to red