我寫了這個簡單的着色器紋理覆蓋在另一個(基地)的質感 -如何疊加紋理而不裁剪基礎紋理?
varying highp vec2 textureCoordinate;
varying highp vec2 textureCoordinate2;
uniform sampler2D inputImageTexture;
uniform sampler2D inputImageTexture2;
void main()
{
mediump vec4 base = texture2D(inputImageTexture, textureCoordinate);
mediump vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2);
mediump float ra = (overlay.a) * overlay.r + (1.0 - overlay.a) * base.r;
mediump float ga = (overlay.a) * overlay.g + (1.0 - overlay.a) * base.g;
mediump float ba = (overlay.a) * overlay.b + (1.0 - overlay.a) * base.b;
gl_FragColor = vec4(ra, ga, ba, 1.0);
}
問題 - 這個工程除了一個問題。如果重疊圖像小於基本圖像,則重疊圖像的外部區域給出α值爲1.0,即overlay.a == 1.0
。由於這個原因,基礎圖像被覆蓋圖像剪切。覆蓋圖之外的區域顯示爲黑色。
我是新來的opengl,並期待它的邊界外,紋理的alpha應該顯示爲0.0?如何修復我的着色器代碼以實現所需的行爲?或者我需要修改我的圖形管道?
編輯頂點着色器如下─
attribute vec4 inputTextureCoordinate2;
varying vec2 textureCoordinate;
varying vec2 textureCoordinate2;
void main()
{
gl_Position = pos;
textureCoordinate = uv;
textureCoordinate2 = inputTextureCoordinate2.xy;
}
你可以發佈你的頂點着色器代碼嗎? – Swifter
@Swifter:添加了頂點着色器 –