我基本上有两个纹理,一个基础和一个叠加。我需要两个将它们绘制成一个新的纹理。
所以,如果纹理1是:
AAAAA
BBBBB
CCCCC
和纹理2是:
B
B
A
那么它应该返回:
ABAAA
BBBBB
CACCC
除了它是实际纹理,而不是字母。
(注意:空字符是透明的,会被忽略)
更新1:
我不能使用着色器,因为这是在modding环境中,我需要绑定一个由外部渲染器绘制的纹理。这有意义吗?
更新2:
第二张图片的alpha可以是任何东西。 0.0或透明表示不使用它并使用第1张图像,否则使用第2张图像
答案 0 :(得分:0)
您可以将生成的纹理设置为FBO作为附件,然后在片段着色器中混合两个输入纹理。这只是步骤的大纲:
glGenFramebuffers
,glBindFramebuffer
)。使用从两个纹理中采样的片段着色器绑定程序,然后混合它们。 GLSL代码看起来像这样:
in vec2 TexCoord;
uniform sampler2D Texture1;
uniform sampler2D Texture2;
out FragColor;
void main() {
vec4 texVal1 = texture(Texture1, TexCoord);
vec4 texVal2 = texture(Texture2, TexCoord);
FragColor = mix(texVal2, texVal1, texVal2.a);
}
设置属性,制服等