所以我希望我的纹理颜色与其下面的颜色相乘,如何使用 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 。如何做到这一点?
最佳答案
So i want my texture colors to multiply with the colors under it, how this can be done with glBlendFunc() ?
通过“纹理颜色”,我假设您的意思是“glTexEnv 过程输出的颜色”。或者,使用更严格的OpenGL规范语言,片段颜色。
无论如何,这是一个 simple matter of blending 。如果您使用 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 的颜色)相乘,并加到零(从技术上讲,零乘以目标颜色)。
关于c++ - 如何通过简单的乘法将纹理颜色混合到其下面的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6932878/