当前位置: 首页 > 知识库问答 >
问题:

使用GL_QUAD_STRIP或GL_LINE_STRIP时,LWJGL/OpenGL - Alpha不起作用

叶茂
2023-03-14

我想使用Alpha / Blend模式进行未来的事情(主要是交易和可能的图像混合)。

好吧,我不能让它使用LWJGL(GL1.1)工作,我已经尝试了其他混合模式,但没有工作,也没有改变背景或类似的东西...

    < Li > http://I . imgur . com/Chu 4 ygs . png-GL _ BLEND始终启用,一切都是透明的 < Li > http://I . imgur . com/spmpqne . png-GL_BLEND在QUAD和text上启用,我可以看到在禁用的GL _ BLEND上的行 < Li > I imgur com/nkda 41v png-GL _ BLEND禁用除文本之外的所有内容-

不管有没有alpha参数所有这些测试的结果都是一样的

`    private void init() {
        try {
            Display.setDisplayMode(new DisplayMode(DEFAULT_WIDTH, DEFAULT_HEIGHT));
            Display.setResizable(true);
            Display.setVSyncEnabled(true);
            Display.setTitle(DEFAULT_TITLE + " v" + VERSION);
            Display.create();
            updateMatrix();
        } catch(LWJGLException e) {
            e.printStackTrace();
        }
        Keyboard.enableRepeatEvents(true);
        glEnable(GL_BLEND);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

  1. 从 Slick's Color 构造函数中删除 'alpha' 参数
  2. 使用 OpenGL 的 glColor,带或不带 alpha 参数
  3. 禁用/启用GL_BLEND部分代码(我知道有些事情不起作用,但你永远不会知道,对吧?
  4. 使用 α 变量的常量(例如 0.3f、0.5f、0.7f、1f),而不是使用刻度作为度数通过 Math.sin/cos 使其可变
  5. 使用 glRect(...)
  6. 更改背景
  7. 删除 glClearColor
  8. 删除glClear(不错的效果,从来没有做过这个笑声)

> < li>

在一侧,它从(0,0)移动到(宽度- 7%,高度- 5%)

另一方面,它静止不动(宽度3%,高度5%)

矩形会使它褪色(最初的想法会使用与背景相同的颜色,但在我的测试中没有,因为我想看到矩形)

共有2个答案

郎祯
2023-03-14

除了来自@Juxhin的提示之外,解决我的alpha混合问题的是TextureImpl。bindNone();来自SlickUtils(请查看下面类似的openGL)

此方法类似于在渲染需要丰富的东西之前(GL_TEXTURE_2D)的glDisable(我知道搜索和检查Slick的源代码)

后焕
2023-03-14

在使用自己的引擎制作2D游戏时,我也有类似的(就我必须解决的问题而言)。LWJGL的混合函数总是有一些问题,并且没有那么多具体的答案,因为它实际上归结为你的代码和你如何放置东西。

我假设你正在使用SlickUtil,为此我会说写你自己的(或者当然搜索)你自己的方法。Util的方法在混合方面总是有些不稳定。

  1. 删除alpha在获得您想要的方面不会有太大变化。
  2. 我显式启用GL_BLEND的唯一时间是在渲染灯光时(始终假定您正在进行3D),以及渲染纹理时。
  3. 我建议不要删除glClearColor,只要您将它放在正确的位置,它不会直接影响您的情况

就像我说的,这个bug/问题可能是由于很多事情造成的,我无法从你发布的内容中找到原因。

我的建议是:

  1. 组织好整个项目,能够快速指出错误
  2. 尽快让很多东西通用(如果你只是想快速写一些东西,没关系)
  3. 避免SlickUtil,它是伟大的,我喜欢它,但它确实得到它的问题

抱歉,我帮不了你太多,但是从你发布的混乱代码中找到你的问题有点困难。我会留意这个问题,也许将来会有所帮助。

 类似资料:
  • 我想画一个球体并对它进行纹理,我用三角形来画它,当我试图对它进行纹理时,有些三角形没有被覆盖 我用这个函数来生成坐标

  • 如果解释得不好,我很抱歉。我会回答你可能有的任何问题。 下面是用于创建蓝色矩形的代码块: 我想写一个修改版本的代码,以调整的阿尔法通道的矩形。 同样,我使用三角形来近似一个圆,并允许适当的光线投射。

  • 问题内容: 根据Bootstrap 3文档,我向导航栏添加了以下属性: 向下滚动页面后,Bootstrap 4不会将类添加到后缀为navbar的页面。谁能告诉我如何解决这个问题?Bootstrap.js和jQuery.js正常运行。 问题答案: 尽管词缀在版本4中已从Bootstrap中删除。但是,您可以通过以下jQuery代码实现目标:

  • 什么都没发生。 我的印象是,当将放入近平面和远平面参数时,0.0f-2.0f范围内的任何顶点坐标都被线性插值到坐标系-1.0f-1.0f中,以用作归一化设备坐标。但是,无论我在这里放哪一对值,都没有呈现任何东西。 下面是我试图绘制的坐标: 当将投影矩阵传递给顶点着色器时: 顶点着色器本身:

  • 我是OpenGL新手。我将Java与LWJGL和Slick一起使用。到目前为止,我可以绘制多个纹理,使用缓冲区,我可以将屏幕上显示的图像复制到一个纹理,以便进行后处理。使用glColor3f()可以使屏幕具有所需的颜色(仅蓝色、仅红色、仅显示蓝色和绿色通道等)。 但是glColor3f(r, g, b)所做的只是将r, g, b的值乘以当前像素。如果R,G,B是像素的当前值,那么glColor对所

  • 我正在尝试在OpenGL/LWJGL中制作一个简单的按钮, 我可以正确地渲染我的2D四边形,但是当我实现纹理时,整个四边形只有大约3/4的部分得到了纹理,就像这样:https://dl.dropboxusercontent.com/u/60223805/glerror1.png 如果我删除纹理坐标,我得到这个:https://dl.dropboxusercontent.com/u/60223805