0

我想渲染一个场景并将材质颜色与纹理混合。我正在使用可编程管道和 GLSL,当调用函数 texture() 时,网格的所有部分都希望没有纹理变得透明。(即使我没有在最终的 fragColor 中使用 vec4)

看看下面的截图,在第一张图片中我只有材质颜色,在第二张图片中应用了纹理,但是只有材质颜色的面变得透明..

在我的片段着色器中,我有类似的东西:

vec4 tex = texture(texsampl,fTexCoord);
fFragColor = ambient + (diffuse*tex)  + specular;
4

1 回答 1

0

只有材料颜色变得透明。

好吧,您正在添加值,这是可以预期的。您应该改用一些混合函数,例如mix(=s*a + d*(1-a)其中 s 和 d 是材质和纹理,a 是一些混合因子)或slerp.

于 2013-08-23T16:58:34.123 回答