我如何用OpenGL实现这种照明?

我目前正试图实施一种“平滑”的照明。 我怎样才能实现这样的照明:

http://img.ufgame.com/opengl/warp3.png

使用OpenGl。 我试图使用混合模式,并已经非常接近使其工作,但它是这样出来的: https : //pbs.twimg.com/media/A1071viCEAAlFmJ.png

编辑:使用的技术是绘制照明图像(一个白色的渐变),然后使用混合效果glBlendFunc(GL_DIST_COLOR,GL_ZERO)绘制我的所有图像,但是图像出来,如前所示稍微透明我也没有控制黑色背景是。

而且我也无法改变我想要做的黑色背景的alpha。

我可以在正确的方向得到几个指针吗?

多次使用glBlendFunc(GL_DIST_COLOR,GL_ZERO)的问题是,您将只能带走光线,而不能将更多光线添加到场景中 – 一旦两个或更多光线重叠,这将是一个问题。 您可以通过将所有的灯光添加到屏幕外的缓冲区,然后在完成场景的其余部分后立即绘制整个事物来解决这个问题。

要创建和维护屏幕外缓冲区,可以使用OpenGL帧缓冲区对象,如下所述: http : //www.opengl.org/wiki/Framebuffer_Object 。 你可以用相同的方法绘制到后台缓冲区/屏幕。 为了累积所有灯光,您可以使用简单的添加混合模式:

glBlendFunc(GL_SRC_ALPHA, GL_ONE) 

这也将允许你使用光的alpha通道。