Java 在opengl中将两个纹理绘制到新纹理
我基本上有两个纹理,一个基础,一个覆盖。我需要两个画他们两个到一个新的纹理 因此,如果纹理1是:Java 在opengl中将两个纹理绘制到新纹理,java,opengl,lwjgl,Java,Opengl,Lwjgl,我基本上有两个纹理,一个基础,一个覆盖。我需要两个画他们两个到一个新的纹理 因此,如果纹理1是: AAAAA BBBBB CCCCC 纹理2是: B B A 然后它应该返回: ABAAA BBBBB CACCC 除非是真实的纹理,而不是字母 (注意:空字符为透明字符,将被忽略) 更新1: 我不能使用着色器,因为这是在一个modding环境中,我需要绑定一个由外部渲染器绘制的纹理。这有意义吗 更新2: 第二个图像的alpha可以是任何内容。0.0或透明意味着不使用它并使用第一个图像,否
AAAAA
BBBBB
CCCCC
纹理2是:
B
B
A
然后它应该返回:
ABAAA
BBBBB
CACCC
除非是真实的纹理,而不是字母
(注意:空字符为透明字符,将被忽略)
更新1:
我不能使用着色器,因为这是在一个modding环境中,我需要绑定一个由外部渲染器绘制的纹理。这有意义吗
更新2:
第二个图像的alpha可以是任何内容。0.0或透明意味着不使用它并使用第一个图像,否则使用第二个图像您可以设置一个FBO,将生成的纹理作为附件,然后在片段着色器中混合两个输入纹理。这只是步骤的概要:
glGenFramebuffers
,glBindFramebuffer
)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);
}
你要找的是混合。基本上,首先使用纹理1绘制一个四边形,然后使用纹理2绘制一个四边形,其中纹理2的颜色由alpha值加权。因此,如果纹理2的alpha值为0,则会看到纹理1,如果alpha值为1,则会看到纹理2。这可以使用多纹理或着色器实现(但不会创建单个输出纹理)。纹理2使用哪种透明度?只有0.0和1.0?你能解释为什么它们需要组合成一个纹理而不是同时应用两个纹理吗?