2016-09-07 24 views
1

我使用JOGL的遊戲,但下面的錯誤被拋出:JOGL不可變glNamedBufferStorage不上線還不支持主AWTAnimator

Exception in thread "main-AWTAnimator#00" com.jogamp.opengl.util.AnimatorBase$UncaughtAnimatorException: com.jogamp.opengl.GLException: Caught InternalError: Immutable glNamedBufferStorage not supported yet on thread main-AWTAnimator#00 at com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:92) at com.jogamp.opengl.util.AnimatorBase.display(AnimatorBase.java:452) at com.jogamp.opengl.util.Animator$MainLoop.run(Animator.java:204) at java.lang.Thread.run(Thread.java:745) Caused by: com.jogamp.opengl.GLException: Caught InternalError: Immutable glNamedBufferStorage not supported yet on thread main-AWTAnimator#00 at com.jogamp.opengl.GLException.newGLException(GLException.java:76) at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1327) at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147) at com.jogamp.newt.opengl.GLWindow.display(GLWindow.java:759) at com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:81) ... 3 more Caused by: java.lang.InternalError: Immutable glNamedBufferStorage not supported yet at jogamp.opengl.GLBufferObjectTracker.createBufferStorage(GLBufferObjectTracker.java:219) at jogamp.opengl.gl4.GL4bcImpl.glNamedBufferStorage(GL4bcImpl.java:40826) at rendering.Renderer.initBuffers(Renderer.java:182) at rendering.Renderer.init(Renderer.java:128) at jogamp.opengl.GLDrawableHelper.init(GLDrawableHelper.java:644) at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:690) at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674) at jogamp.opengl.GLAutoDrawableBase$2.run(GLAutoDrawableBase.java:443) at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293) ... 6 more

執行代碼

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

當這種情況發生這個錯誤發生的原因是什麼?我該如何解決這個問題?

+1

是不是錯誤信息不言自明?似乎JOGL不支持'glNamedBufferStorage'。 – SurvivalMachine

+1

此功能將實施,這不是一個明確的限制。 – gouessej

回答

2

這是一個當前的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);