OpenGL纹理覆盖材质颜色

时间:2013-08-23 16:33:10

标签: opengl shader fragment-shader

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

在下面的screeshots中查看,在第一个图像中我只有材质颜色,在第二个图像中应用了纹理,但是只有材质颜色的面部变得透明。

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

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

1 个答案:

答案 0 :(得分:0)

  

只有材质颜色变得透明。

嗯,你正在添加值,这就是预期的结果。您应该使用一些混合函数,例如mix(= s*a + d*(1-a),其中s和d是材质和纹理,a是一些混合因子)或slerp