【问题标题】:Slick2d / LWJGL Adjusting alpha channel in OpenGL layer ( Java )Slick2d / LWJGL 在 OpenGL 层 (Java) 中调整 alpha 通道
【发布时间】:2016-10-13 17:29:52
【问题描述】:

我为我的一些无知道歉,因为我对 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();

再次,我使用三角形来近似圆形并允许适当的光线投射。

【问题讨论】:

    标签: java opengl lwjgl alpha slick2d


    【解决方案1】:

    要实现这一点,使用帧缓冲区对象非常有用。 FBO 允许您实质上渲染到可以在屏幕上显示的纹理。在我的特殊情况下,我将元素渲染到 FBO,然后使用着色器将其绘制到屏幕上以获得所需的不透明度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-18
      • 2014-04-30
      • 2012-01-11
      • 1970-01-01
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多