【问题标题】:Java - LWJGL - transperent TextureJava - LWJGL - 透明纹理
【发布时间】:2013-01-02 10:45:35
【问题描述】:

我一直在查看许多网站和 LWJGL 教程,我很惊讶地发现 没有太多东西可以解释如何创建一个使用 透明纹理。

我使用 gimp 去除了 PNG 背景中的白色 图像,它变成透明的棋盘,女巫看起来不错,当我在 Windows 照片查看器中打开它时很好。

但是,在我的程序中打开它时,图像周围仍然有白色方块,所以当两个不透明的图像发生碰撞时,它看起来很糟糕。

我认为到 2012 年,任何具有非透明纹理的游戏看起来都非常不专业。

我需要解决这个问题,所以请有人指出正确的方向或解释如何解决问题。

请记住:我正在使用 LWJGL 和 opengl Texture 以及 opengl TextureLoader 以及在 gimp 中编辑的 PNG 图像以获得透明背景。

【问题讨论】:

    标签: java lwjgl


    【解决方案1】:

    如果您使用的是默认管道,请检查如何使用 glBlendFunction。

    所以基本上你会告诉 openGL 如何将多个图像与 alpha 值混合。

    此外,如果您使用 glTexImage2D 调用,请确保源像素格式为 GL_RGBA。

    【讨论】:

    • 是在游戏循环中绘制图像之前调用 glBlend() 还是应该在游戏循环之外?
    【解决方案2】:

    启用 OpenGL 后在初始化代码中使用这行代码:

    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    

    它现在应该可以工作了。

    如果您需要解释:您只是告诉 OpenGL 将图像的 Alpha 通道与其下方的任何图像混合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-04
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      相关资源
      最近更新 更多