更新时间:2023-08-30 14:08:58
你必须传递2个纹理坐标到着色器和修改着色器
You have to pass 2 texture coordinates to shader and modify shader
添加到ObjectiveC
Add to ObjectiveC
glVertexAttribPointer(inputTextureCoordinate2, 2, GL_FLOAT, 0, 0, textureCoordinates2);
Vertex Shader
Vertex Shader
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;
}
Frag Shader
Frag Shader
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);
}
BTW inputTextureCoordinate不一定是vec4但它可能是vec2
BTW inputTextureCoordinate is not necessary to be vec4 but it could be vec2