LibGDX RayHandler:禁用像素解包缓冲区对象时无法使用偏移
LibGDX RayHandler: Cannot use offsets when Pixel Unpack Buffer Object is disabled
我最近更新了我在游戏中使用的 LibGDX 库,方法是使用 LibGDX 安装程序创建一个新项目,然后将我所有的 类、资产等导入说新项目。一切顺利,游戏运行,我可以进入主菜单。但是,当我尝试前进到我有 Box2DLights 的游戏时,我在 RayHandler 的实例化中抛出了一个错误。 RayHandler 的实例化如下:
rays = new RayHandler(world, Game.V_WIDTH/LIGHT_PIXEL_SIZE, Game.V_HEIGHT/LIGHT_PIXEL_SIZE);
这在旧版本的 LibGDX 库中有效,但现在它抛出 Exception in thread "LWJGL Application" org.lwjgl.opengl.OpenGLException: Cannot use offsets when Pixel Unpack Buffer Object is disabled
旧版LibGDX是GL20,这个是GL30。我不确定这是否相关,因为我对 OpenGL 知之甚少。
在我的 RayHandler 实例化之前放置行 Gdx.gl.glBindBuffer(GL30.GL_PIXEL_UNPACK_BUFFER, 1);
将错误更改为 Exception in thread "LWJGL Application" java.lang.IllegalStateException: Frame buffer couldn't be constructed: incomplete attachment
。在我的 RayHandler 再次实例化的那一行抛出。
第一个错误的整个相关堆栈跟踪是:
Exception in thread "LWJGL Application" org.lwjgl.opengl.OpenGLException: Cannot use offsets when Pixel Unpack Buffer Object is disabled
at org.lwjgl.opengl.GLChecks.ensureUnpackPBOenabled(GLChecks.java:125)
at org.lwjgl.opengl.GL11.glTexImage2D(GL11.java:2899)
at com.badlogic.gdx.backends.lwjgl.LwjglGL20.glTexImage2D(LwjglGL20.java:598)
at com.badlogic.gdx.graphics.glutils.GLOnlyTextureData.consumeCustomData(GLOnlyTextureData.java:78)
at com.badlogic.gdx.graphics.GLTexture.uploadImageData(GLTexture.java:270)
at com.badlogic.gdx.graphics.GLTexture.uploadImageData(GLTexture.java:257)
at com.badlogic.gdx.graphics.Texture.load(Texture.java:159)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:147)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:142)
at com.badlogic.gdx.graphics.glutils.FrameBuffer.createTexture(FrameBuffer.java:81)
at com.badlogic.gdx.graphics.glutils.FrameBuffer.createTexture(FrameBuffer.java:42)
at com.badlogic.gdx.graphics.glutils.GLFrameBuffer.build(GLFrameBuffer.java:174)
at com.badlogic.gdx.graphics.glutils.FrameBuffer.<init>(FrameBuffer.java:75)
at com.badlogic.gdx.graphics.glutils.FrameBuffer.<init>(FrameBuffer.java:57)
at box2dLight.LightMap.<init>(LightMap.java:118)
at box2dLight.RayHandler.resizeFBO(RayHandler.java:143)
at box2dLight.RayHandler.<init>(RayHandler.java:132)
LibGDX Discord 服务器中有人回答了我的问题。他们与我分享了这个:https://github.com/libgdx/libgdx/issues/6407
谁知道可能存在不是我的错的错误?
将 GDX 版本从 1.9.14 更改为 1.9.15-SNAPSHOT 解决了这个问题。
我最近更新了我在游戏中使用的 LibGDX 库,方法是使用 LibGDX 安装程序创建一个新项目,然后将我所有的 类、资产等导入说新项目。一切顺利,游戏运行,我可以进入主菜单。但是,当我尝试前进到我有 Box2DLights 的游戏时,我在 RayHandler 的实例化中抛出了一个错误。 RayHandler 的实例化如下:
rays = new RayHandler(world, Game.V_WIDTH/LIGHT_PIXEL_SIZE, Game.V_HEIGHT/LIGHT_PIXEL_SIZE);
这在旧版本的 LibGDX 库中有效,但现在它抛出 Exception in thread "LWJGL Application" org.lwjgl.opengl.OpenGLException: Cannot use offsets when Pixel Unpack Buffer Object is disabled
旧版LibGDX是GL20,这个是GL30。我不确定这是否相关,因为我对 OpenGL 知之甚少。
在我的 RayHandler 实例化之前放置行 Gdx.gl.glBindBuffer(GL30.GL_PIXEL_UNPACK_BUFFER, 1);
将错误更改为 Exception in thread "LWJGL Application" java.lang.IllegalStateException: Frame buffer couldn't be constructed: incomplete attachment
。在我的 RayHandler 再次实例化的那一行抛出。
第一个错误的整个相关堆栈跟踪是:
Exception in thread "LWJGL Application" org.lwjgl.opengl.OpenGLException: Cannot use offsets when Pixel Unpack Buffer Object is disabled
at org.lwjgl.opengl.GLChecks.ensureUnpackPBOenabled(GLChecks.java:125)
at org.lwjgl.opengl.GL11.glTexImage2D(GL11.java:2899)
at com.badlogic.gdx.backends.lwjgl.LwjglGL20.glTexImage2D(LwjglGL20.java:598)
at com.badlogic.gdx.graphics.glutils.GLOnlyTextureData.consumeCustomData(GLOnlyTextureData.java:78)
at com.badlogic.gdx.graphics.GLTexture.uploadImageData(GLTexture.java:270)
at com.badlogic.gdx.graphics.GLTexture.uploadImageData(GLTexture.java:257)
at com.badlogic.gdx.graphics.Texture.load(Texture.java:159)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:147)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:142)
at com.badlogic.gdx.graphics.glutils.FrameBuffer.createTexture(FrameBuffer.java:81)
at com.badlogic.gdx.graphics.glutils.FrameBuffer.createTexture(FrameBuffer.java:42)
at com.badlogic.gdx.graphics.glutils.GLFrameBuffer.build(GLFrameBuffer.java:174)
at com.badlogic.gdx.graphics.glutils.FrameBuffer.<init>(FrameBuffer.java:75)
at com.badlogic.gdx.graphics.glutils.FrameBuffer.<init>(FrameBuffer.java:57)
at box2dLight.LightMap.<init>(LightMap.java:118)
at box2dLight.RayHandler.resizeFBO(RayHandler.java:143)
at box2dLight.RayHandler.<init>(RayHandler.java:132)
LibGDX Discord 服务器中有人回答了我的问题。他们与我分享了这个:https://github.com/libgdx/libgdx/issues/6407 谁知道可能存在不是我的错的错误? 将 GDX 版本从 1.9.14 更改为 1.9.15-SNAPSHOT 解决了这个问题。