【问题标题】:JOGL Immutable glNamedBufferStorage not supported yet on thread main-AWTAnimator线程 main-AWTAnimator 上尚不支持 JOGL 不可变 glNamedBufferStorage
【发布时间】:2016-09-07 09:53:10
【问题描述】:

我正在使用 JOGL 进行游戏,但抛出以下错误:

线程“main-AWTAnimator#00”com.jogamp.opengl.util.AnimatorBase$UncaughtAnimatorException: com.jogamp.opengl.GLException: Caught InternalError: Immutable glNamedBufferStorage not supported on thread main-AWTAnimator#00 在 com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:92) 在 com.jogamp.opengl.util.AnimatorBase.display(AnimatorBase.java:452) 在 com.jogamp.opengl.util.Animator$MainLoop.run(Animator.java:204) 在 java.lang.Thread.run(Thread.java:745) 引起:com.jogamp.opengl.GLException:捕获内部错误:线程 main-AWTAnimator#00 上尚不支持不可变 glNamedBufferStorage 在 com.jogamp.opengl.GLException.newGLException(GLException.java:76) 在 jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1327) 在 jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147) 在 com.jogamp.newt.opengl.GLWindow.display(GLWindow.java:759) 在 com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:81) ... 3 更多 原因:java.lang.InternalError: Immutable glNamedBufferStorage not supported yet 在 jogamp.opengl.GLBufferObjectTracker.createBufferStorage(GLBufferObjectTracker.java:219) 在 jogamp.opengl.gl4.GL4bcImpl.glNamedBufferStorage(GL4bcImpl.java:40826) 在渲染.Renderer.initBuffers(Renderer.java:182) 在渲染.Renderer.init(Renderer.java:128) 在 jogamp.opengl.GLDrawableHelper.init(GLDrawableHelper.java:644) 在 jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:690) 在 jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674) 在 jogamp.opengl.GLAutoDrawableBase$2.run(GLAutoDrawableBase.java:443) 在 jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293) ... 6 更多

执行代码时会发生这种情况

gl4.glNamedBufferStorage(bufferName.get(Buffer.VERTEX), vertexBuffer.capacity() * Float.BYTES, vertexBuffer,
            GL_STATIC_DRAW);

引发此错误的原因是什么,我该如何解决?

【问题讨论】:

  • 该错误消息不是不言自明吗?看来JOGL不支持glNamedBufferStorage
  • 这个功能将被实现,它不是一个明确的限制。

标签: java opengl exception buffer jogl


【解决方案1】:

这是当前的 jogl 限制,我前段时间开了一个bug,但是由于 Jogamp 正在经历一些重组,所以在很短的时间内情况不会改变。

虽然解决方法很简单,但我们应该评论this out

否则,只需将不可变存储与旧方式学校绑定一起使用:

gl4.glBindBuffer(GL_ARRAY_BUFFER, bufferName.get(Buffer.VERTEX));
gl4.glBufferStorage(GL_ARRAY_BUFFER, vertexBuffer.capacity() * Float.BYTES, vertexBuffer, 0);
gl4.glBindBuffer(GL_ARRAY_BUFFER, 0);

【讨论】:

    猜你喜欢
    • 2014-07-23
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 2011-12-31
    相关资源
    最近更新 更多