텍스처를 사용하고 싶지 않을 때 가장 좋은 방법은 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
을보고 색상으로 바꿉니다. 예를 들어, 코드는 다음
uniform vec4 u_color;
gl_FragCoord = u_color; // get color from uniform
을 설정할 수 있도록하려면
gl_FragCoord = vec4(1,0,0,1); // just use red
에
gl_FragCoord = texture2D(u_samplers, v_texcoord);
변경이 나 이제
와 그 색상을 설정할 수 있습니다 경우
// at init time
colorLocation = gl.getUniformLocation(program, "u_color");
// at draw time
gl.uniform4fv(colorLocation, [1, 0, 0, 1]); // set color to red
아마 알아야 할 것은 'sampler2 D'는 GLSL의 텍스처를 정의하고,'texture2D' (및 유사한 함수)는 그러한 텍스처로부터 특정 픽셀을 가져옵니다. 따라서 해당 유형의 변수를 찾고 함수 호출을 단색으로 바꿉니다. – Dave