我正在努力实现某种混合效果,但未能使其恰到好处:
在此图像上,您可以在黑色背景上看到3条“发光的线条”。
glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA)
用于混合。
然而,这有一个我想要摆脱的神器,顺序很明显并且有效。
如果你仔细观察,你可以看到垂直线首先渲染,因为它被其他人遮挡,然后渲染红色。最后你有相当覆盖的最后一行,特别是它的相当不透明的中心会覆盖所有内容。
目标是有效地获得光度之和,最亮部分优先,无论渲染顺序如何。有没有办法实现这个目标?
此外,这是创建一个然后呈现为整体的对象的一部分,因此可以将所有线渲染到FBO,执行魔术(着色器?)然后将FBO渲染到场景中。
编辑: 用于个人测试; python + pyglet的源代码和辉光线纹理:
https://dl.dropbox.com/u/44766482/blendtest.zip
A / D键循环显示目标模式和W / S键用于源模式。 第一行您可以更改图像路径,在纹理中更改透明度和黑色之间 - 但生成的图像需要实际透明度而不是黑色。