1

所以我希望我的纹理颜色与它下面的颜色相乘,如何使用 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。这该怎么做?

4

1 回答 1

3

所以我希望我的纹理颜色与它下面的颜色相乘,如何使用 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);

这会导致目标颜色(帧缓冲区中的内容)与源颜色(来自 glTexEnv 的内容)相乘,并加到零(从技术上讲,是目标颜色的零倍)。

于 2011-08-03T21:31:25.037 回答