如何混合纹理颜色与简单的乘法到它下面的颜色



所以我想让我的纹理颜色与它下面的颜色叠底,这怎么能用glBlendFunc()来完成呢?

例如:如果我有一个纹理颜色(0.31,0.51,0.124),并且在它下面有一个颜色(0.83,0.64,0.12),那么得到的颜色将是0.31*0.83,0.51*0.64,0.124*0.12。如何做到这一点?

所以我想让我的纹理颜色与它下面的颜色叠底,这是如何做到与glBlendFunc() ?

通过"纹理颜色",我假设你的意思是"由glTexEnv进程输出的颜色"。或者,使用更严格的OpenGL规范语言,片段颜色。

在任何情况下,这都是一个简单的混合问题。如果您使用的是OpenGL 2.1或以上版本:

glBlendEquationSeparate(GL_FUNC_ADD, GL_FUNC_ADD); //No, that's not a typo. Read the wiki article.
glBlendFuncSeparate(GL_DST_COLOR, GL_ZERO, GL_DST_ALPHA, GL_ZERO);

这会导致目标颜色(framebuffer中的颜色)与源颜色(来自glTexEnv的颜色)相乘,并添加到零(技术上,零乘以目标颜色)。

最新更新