我呈现蓝色和红色线(在立体照片的上下文中)。当红线和蓝线重叠时,我想要呈现紫色而不是前面的线。
我正在使用OpenGL。到目前为止,我尝试过的一些代码是:
glBlendFunc(GL_ONE, GL_DST_ALPHA);
这会导致重叠呈现白色,并且该行显示如下:
我认为在这种混合之上使用RGB比例因子是正确的做法。
所以我尝试使用带参数的glBlendFuncSeparate
:
我找不到让这对我有用的参数。
我还试图将glBlendEquation
与附加方程式一起使用,但没有注意到该方法有任何成功。
如何生成将两条线成功混合成紫色的功能?
编辑:
我注意到glBlendFunc(GL_ONE, GL_DST_ALPHA)
确实执行了一些混合来产生中间色(实际的线条在这里只是无意义,只是为了显示一些混合)。
答案 0 :(得分:2)
我呈现蓝色和红色线(在立体照片的上下文中)
不是您期望的答案,但您需要的答案:在OpenGL 中渲染浮雕图像的常用方法不是来使用混合。混合很难做到正确,你不想用浮雕部分进一步弄乱。
有两种常用方法:
将每个视图渲染为FBO附加纹理,并在后处理步骤中将它们组合。
使用glColorMask
为每个渲染步骤选择活动颜色通道。
我认为现在你对彩色遮罩方法很满意:按照以下方式做到:
display:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glViewport(…)
# prepare left view
setup_left_view_projection()
glColorMask(1,0,0, 1); # red is commonly used for the left eye
draw_scene()
glClear(GL_DEPTH_BUFFER_BIT) # clear the depth buffer (and just the depth buffer!)
# prepare right view
setup_right_view_projection()
glColorMask(0,1,1, 1); # cyan is commonly used for the right eye
draw_scene()
答案 1 :(得分:1)
典型的混合函数是glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
;请注意,最终颜色会根据绘制顺序而变化。
混合功能不是那么明显,所以图形表示有时会更好;请查看示例this网站。