我为一些无知而道歉,因为我对Slick2D和LWJGL相当新。基本上我正在尝试做的是通过用GL_QUADS矩形覆盖它来使场景看起来像夜晚时间,该矩形是蓝色的并且是半透明的。
那部分很容易。我想要做的是在这个层中绘制三角形,这样可以改变alpha通道。我想这样做的原因是,我可以通过降低蓝色有色矩形的不透明度来模拟光源,因为它靠近光源。
我举了一个例子,说明绿色是背景的预期结果,蓝色是蓝色有色矩形产生的夜间效果,中心的光源越来越暗淡。
我需要找到一种方法来处理三角形,因为我创建了一个光线投射算法,将结果生成为一系列渐变三角形。
如果解释得不好,我道歉。我会回答你的任何问题。
以下是用于创建蓝色矩形的代码块:
glColor4f (0.0f,0.0f,1.0f,0.4f);
glBegin(GL_QUADS);
glVertex2f(0,0);
glVertex2f(screenWidth,0);
glVertex2f(screenWidth,screenHeight);
glVertex2f(0,screenHeight);
glEnd();
我想编写以下代码的修改版本来调整该矩形的alpha通道。
glBegin(GL_TRIANGLES);
setAlphaOfPriorLayer(0.0f);
glVertex2f(x1,y1);
setAlphaOfPriorLayer(0.4f);
glVertex2f(x2,y2);
setAlphaOfPriorLayer(0.4f);
glVertex2f(x3,y3);
glEnd();
同样,我使用三角形来近似圆圈并允许正确的光线投射。
答案 0 :(得分:0)
为了实现这一点,使用帧缓冲对象非常有用。 FBO允许您实际渲染到纹理,然后可以在屏幕上显示。在我的特殊情况下,我将元素渲染到FBO,然后使用着色器将其绘制到屏幕上以获得所需的不透明度。