Я использую webgl, чтобы связать матовое изображение с обычным изображением. Матовое изображение обеспечивает обычную прозрачность изображения.
Мне удалось успешно загрузить оба изображения в виде текстур, но при запуске программы моя цветовая текстура и матовая текстура не совпадают. Как вы можете видеть на рисунке ниже, черный цвет должен исчезнуть, но вместо этого он выглядит масштабированным и перевернутым.
Я нахожу это очень странным, поскольку и "цветной" канал, и "альфа" канал используют одну и ту же текстуру.
Мой вопрос: как я могу вращать / изменять размер альфа-канала внутри шейдера? Или мне придется создать новую координатную плоскость текстуры, чтобы отобразить альфа-канал.
Для справки это мой код ниже:
vertexShaderScript = [
'attribute vec4 vertexPos;',
'attribute vec4 texturePos;',
'varying vec2 textureCoord;',
'void main()',
'{',
' gl_Position = vertexPos;',
' textureCoord = texturePos.xy;',
'}'
].join('\n');
fragmentShaderScript = [
'precision highp float;',
'varying highp vec2 textureCoord;',
'uniform sampler2D ySampler;',
'uniform sampler2D uSampler;',
'uniform sampler2D vSampler;',
'uniform sampler2D aSampler;',
'uniform mat4 YUV2RGB;',
'void main(void) {',
' highp float y = texture2D(ySampler, textureCoord).r;',
' highp float u = texture2D(uSampler, textureCoord).r;',
' highp float v = texture2D(vSampler, textureCoord).r;',
' highp float a = texture2D(aSampler, textureCoord).r;',
' gl_FragColor = vec4(y, u, v, a);',
'}'
].join('\n');