只要使用带有HtmlCanvasElement的texSubImage2D更新WebGLTexture,所有细线都会消失。即使启用了图像平滑,将相关画布渲染到另一个画布也能正常工作。
创建画布:
ctx.clearRect(0, 0, ww, hh);
ctx.lineWidth = 0.25;
ctx.strokeStyle = "rgba(51,51,51,0.75)";
ctx.beginPath();
for (let xx = 0; xx < ww; xx += 8) {
ctx.moveTo(xx, 0);
ctx.lineTo(xx, hh);
};
for (let yy = 0; yy < hh; yy += 8) {
ctx.moveTo(0, yy);
ctx.lineTo(ww, yy);
};
ctx.stroke();
ctx.closePath();
现在将其传递给WebGLTexture:
gl.bindTexture(gl.TEXTURE_2D, my_texture);
gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, my_canvas);
请注意,我使用的是0.25px的线宽和使用alpha 0.75的strokeStyle rgba颜色在画布上绘制一个非常细的网格;