【发布时间】:2019-11-22 04:17:32
【问题描述】:
当我尝试通过canvas.getContext('2d')和canvas.getContext('webgl')将同一个PNG文件加载到画布中时,发现与canvas2d相比,webgl渲染的PNG文件不如canvas2d渲染的详细。这是由点之间的 GPU 插值或纹理设置/上传问题引起的吗?任何可以使 webgl 版本与 canvas 2d 执行完全相同的设置?
let FSHADER_SOURCE = `
precision mediump float;
uniform sampler2D u_image0;
varying vec2 v_texCoord;
void main() {
vec4 color0 = texture2D(u_image0, v_texCoord);
gl_FragColor = color0;
}
`
let texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this.img);
【问题讨论】:
-
这能回答你的问题吗? WebGL image rendering bad quality
-
见texture filtering。另外,由于您提到了 canvas2d,因此有 this
标签: javascript canvas webgl