OpenGL纹理覆盖材质颜色
Posted
技术标签:
【中文标题】OpenGL纹理覆盖材质颜色【英文标题】:OpenGL Texture override material color 【发布时间】:2013-08-23 16:33:10 【问题描述】:我想渲染一个场景并将材质颜色与纹理混合。我正在使用可编程管道和 GLSL,当调用函数 texture() 时,网格的所有部分都希望没有纹理变得透明。 (即使我在最终的 fragColor 中没有使用 vec4)
看下面的截图,在第一张图片中我只有材质颜色,在第二张图片中应用了纹理,但是只有材质颜色的面变得透明..
在我的片段着色器中,我有类似的东西:
vec4 tex = texture(texsampl,fTexCoord);
fFragColor = ambient + (diffuse*tex) + specular;
【问题讨论】:
无法发布图片,信誉低于 10... =( 【参考方案1】:只有材质颜色变得透明。
嗯,您正在添加值,这是可以预期的。您应该改用一些混合函数,例如 mix
(= s*a + d*(1-a)
其中 s 和 d 是材质和纹理,a 是一些混合因子)或 slerp
。
【讨论】:
漫反射、镜面反射和环境光组件已经混合在一起,可以作为总和工作。我正在使用 ATI 显卡。大约一分钟前,我在 nvidia 上进行了测试,然后一切正常……所以我认为这是 ATI/AMD opengl 驱动程序的错误…… @bruchuck:可能,但如果没有更多源代码很难说。以上是关于OpenGL纹理覆盖材质颜色的主要内容,如果未能解决你的问题,请参考以下文章