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