我想渲染一个场景并将材质颜色与纹理混合。我正在使用可编程管道和GLSL,当调用函数texture()时,网格的所有部分都希望没有纹理变得透明。 (即使我不在最终的fragColor中使用vec4)
在下面的screeshots中查看,在第一个图像中我只有材质颜色,在第二个图像中应用了纹理,但是只有材质颜色的面部变得透明。
在我的片段着色器中,我有类似的东西:
vec4 tex = texture(texsampl,fTexCoord);
fFragColor = ambient + (diffuse*tex) + specular;
答案 0 :(得分:0)
只有材质颜色变得透明。
嗯,你正在添加值,这就是预期的结果。您应该使用一些混合函数,例如mix
(= s*a + d*(1-a)
,其中s和d是材质和纹理,a是一些混合因子)或slerp
。