2013-08-23 229 views
0

我想呈现场景并将材质颜色与纹理混合。我使用可编程管道和GLSL,当调用函数texture()时,网格的所有部分都不希望纹理变得透明。 (即使我不使用最后的fragColor中的vec4)OpenGL纹理替换材质颜色

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

在我的片段着色器

,我有类似的东西:

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

着后的图像,低于10的声誉... =( – bruchuck

回答

0

只是物质的颜色变得透明。

那么,你正在添加的值,这就是预期的。你应该使用一些混合功能,如mix(= s*a + d*(1-a),其中s和d是材质和纹理,a是某种混合因子)或slerp

+0

漫反射,镜面反射和ambinet组件已经掺和为一笔工作。 我使用ATI显卡。 约一分钟前,我在NVIDIA测试然后一切工作正常...所以我认为它与ATI/AMD opengl驱动程序的错误... – bruchuck

+0

@bruchuck:可能的,但很难说没有更多的源代码 – datenwolf

+0

驱动程序的新版本纠正了这个问题。 – bruchuck