const vertexShaderTextureSource = `
attribute vec3 a_Position;
attribute vec4 a_Color;
attribute vec2 a_TextureCoords;
uniform mat4 u_ProjectionMatrix;
varying vec4 color;
varying vec2 texCoords;
void main()
{
color = a_Color;
texCoords = a_TextureCoords;
gl_Position = u_ProjectionMatrix * vec4(a_Position, 1.0);
}
`;
const fragmentShaderTextureSource = `
precision mediump float;
varying vec4 color;
varying vec2 texCoords;
uniform sampler2D sampler;
void main()
{
vec4 tex = texture2D(sampler, texCoords);
if (tex.a < 0.01)
discard;
gl_FragColor = tex * color;
}
`;
#loadFontTexture(filePath) {
const texId = gl.createTexture();
const image = new Image();
image.onload = () => {
//console.log(image.width, image.height);
gl.bindTexture(gl.TEXTURE_2D, texId);
gl.activeTexture(gl.TEXTURE0);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
}
image.src = filePath;
return texId;
}
Почему текстура выглядит такой пожёванной?
А если так:
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
Тогда намного лучше.
Но у символов появляется контур. Как будто он в этих местах альфу вырезать не может