我试图在LibGDX中将两个纹理(.PNG)图像添加到我自己的着色器中。除了数学/混合部分,一切都很好。希望有人能帮助我解决这个混合问题!LIBGDX-着色器中不需要的纹理混合
这是我的基本纹理。 (256×256像素,32位纹理)
这是我 “ontop的” 质地。 (256×256像素,32位纹理)
我想要的效果。一个简单的基础纹理与另一个纹理ontop,与透明度的工作。
而目前的结果。纹理之间的混合,纹理的“点”所在的位置会更亮一些。
我试过几种不同的解决方案。这是渲染器,我的类,它实现LibGDX的着色器:
Gdx.gl20.glEnable(Gdx.gl20.GL_BLEND); <-- Doesn't do any difference.
Gdx.gl20.glBlendFunc(Gdx.gl20.GL_ONE, Gdx.gl20.GL_ONE_MINUS_SRC_ALPHA); <-- Dosen't do any difference with the cube, but make vertices transparent on a more advanced mesh.
片段着色器:
#ifdef GL_ES
precision mediump float;
#endif
varying vec2 v_texCoord0;
uniform sampler2D u_texture1;
uniform sampler2D u_texture2;
void main() {
vec4 bodyColor = texture2D(u_texture1, v_texCoord0);
vec4 addColor = texture2D(u_texture2, v_texCoord0);
gl_FragColor = bodyColor + addColor;
}
东西显然是错误的。
非常感谢您解释得非常好的答案!我不知道我必须使用alpha值并以这种方式使用它,但是这帮助了我很多!不仅要解决问题,还要了解更多关于GPU和着色器的知识! 再次感谢Tenfour04! – user2774429 2014-10-08 23:09:31