Slick2d / LWJGL 调整 OpenGL 层中的 alpha 通道 ( Java )
Slick2d / LWJGL Adjusting alpha channel in OpenGL layer ( Java )
对于我的一些无知,我深表歉意,因为我对 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();
同样,我使用三角形来近似圆形并允许适当的光线投射。
为此,使用帧缓冲区对象非常有用。 FBO 允许您从本质上渲染到纹理,然后可以在屏幕上显示。在我的特殊情况下,我将元素渲染到 FBO,然后在将其绘制到屏幕时使用着色器以获得所需的不透明度。
对于我的一些无知,我深表歉意,因为我对 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();
同样,我使用三角形来近似圆形并允许适当的光线投射。
为此,使用帧缓冲区对象非常有用。 FBO 允许您从本质上渲染到纹理,然后可以在屏幕上显示。在我的特殊情况下,我将元素渲染到 FBO,然后在将其绘制到屏幕时使用着色器以获得所需的不透明度。