更新时间:2023-08-30 13:50:52
你必须将2个纹理坐标传递给shader并修改shader
You have to pass 2 texture coordinates to shader and modify shader
添加到ObjectiveC
Add to ObjectiveC
glVertexAttribPointer(inputTextureCoordinate2, 2, GL_FLOAT, 0, 0, textureCoordinates2);
顶点着色器
attribute vec4 position;
attribute vec4 inputTextureCoordinate;
attribute vec4 inputTextureCoordinate2;
varying vec2 textureCoordinate;
varying vec2 textureCoordinate2;
void main()
{
gl_Position = position;
textureCoordinate = inputTextureCoordinate.xy;
textureCoordinate2 = inputTextureCoordinate2.xy;
}
片段着色器
varying highp vec2 textureCoordinate;
varying highp vec2 textureCoordinate2;
uniform sampler2D inputTextureTop;
uniform sampler2D inputTextureBot;
uniform highp float alphaTop;
void main()
{
lowp vec4 pixelTop = texture2D(inputTextureTop, textureCoordinate);
lowp vec4 pixelBot = texture2D(inputTextureBot, textureCoordinate2);
gl_FragColor = someBlendOperation(pixelTop, pixelBot);
}
顺便说一句,inputTextureCoordinate 不一定是 vec4,但它可以是 vec2
BTW inputTextureCoordinate is not necessary to be vec4 but it could be vec2