所以我想让我的纹理颜色与它下面的颜色叠底,这怎么能用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的颜色)相乘,并添加到零(技术上,零乘以目标颜色)。