我搜索了一会儿,但找不到问题的答案。
我正在尝试在包含白色的图像前添加透明对象。为此,我使用了添加剂透明度
//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
我尝试添加
glClampColor(GL_CLAMP_READ_COLOR, GL_FALSE);
有没有办法说opengl当他将红色加到白色时它应该采用红色而不是白色?
对不起我的英语不好,但我希望有人理解我的问题,可以帮助我!
非常感谢!!!
答案 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渲染系统中谨慎使用。