添加剂混合有白色背景

时间:2015-12-12 12:44:32

标签: opengl glsl rendering transparent

我搜索了一会儿,但找不到问题的答案。

我正在尝试在包含白色的图像前添加透明对象。为此,我使用了添加剂透明度

//enable trancparency
glEnable(GL_BLEND);
// disable backface culling
glDisable(GL_CULL_FACE);
// disable depth buffer writing
glDepthMask(GL_FALSE);
// additive blending
glBlendEquation(GL_FUNC_ADD);
glBlendFunc(GL_SRC_ALPHA, GL_ONE);

看起来好像知道了。 White background still white enter image description here

我尝试添加

glClampColor(GL_CLAMP_READ_COLOR, GL_FALSE);

有没有办法说opengl当他将红色加到白色时它应该采用红色而不是白色?

对不起我的英语不好,但我希望有人理解我的问题,可以帮助我!

非常感谢!!!

1 个答案:

答案 0 :(得分:0)

  

有没有办法说opengl当他将红色加到白色时它应该采用红色而不是白色?

当然不是;这不可能。好吧,对于非HDR渲染。

您的(非HDR)颜色被限制在[0,1]范围内。并且白色被定义为所有三个通道的1.0。添加的结果仍将被限制为[0,1]。所以1 +的东西仍然是1.而1 + 0仍然是1。

你不能使颜色通道比白色更白。

您可能需要线性插值混合,而不是添加:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

添加剂混合只能在非HDR渲染系统中谨慎使用。