我正试图在eclipse中运行处理草图。我已经这么做了很长一段时间,但最近才更新到2.1。 运行软件模式时草图运行正常。但是当我尝试使用P2D模式时,我得到以下错误。 我已经包含了处理文件夹中的所有jogl jar。我不确定我是否应该添加本机库,我似乎无法找到它们。
线程“动画线程”中的异常java.lang.RuntimeException:java.lang.NoSuchMethodError:javax.media.opengl.GL2ES2.glVertexAttribPointer(IIIZILjava / nio / Buffer;)V 在com.jogamp.common.util.awt.AWTEDTExecutor.invoke(AWTEDTExecutor.java:58) 在jogamp.opengl.awt.AWTThreadingPlugin.invokeOnOpenGLThread(AWTThreadingPlugin.java:103) 在jogamp.opengl.ThreadingImpl.invokeOnOpenGLThread(ThreadingImpl.java:206) 在javax.media.opengl.Threading.invokeOnOpenGLThread(Threading.java:172) 在javax.media.opengl.Threading.invoke(Threading.java:191) 在javax.media.opengl.awt.GLCanvas.display(GLCanvas.java:492) 在processing.opengl.PGL.requestDraw(PGL.java:1155) at processing.opengl.PGraphicsOpenGL.requestDraw(PGraphicsOpenGL.java:1602) 在processing.core.PApplet.run(PApplet.java:2141) 在java.lang.Thread.run(未知来源) 引起:java.lang.NoSuchMethodError:javax.media.opengl.GL2ES2.glVertexAttribPointer(IIIZILjava / nio / Buffer;)V at processing.opengl.PGL.vertexAttribPointer(PGL.java:3318) at processing.opengl.PGL.drawTexture2D(PGL.java:1594) at processing.opengl.PGL.drawTexture(PGL.java:1507) at processing.opengl.PGL.endDraw(PGL.java:1110) at processing.opengl.PGraphicsOpenGL.endOnscreenDraw(PGraphicsOpenGL.java:5974) at processing.opengl.PGraphicsOpenGL.endDraw(PGraphicsOpenGL.java:1681) 在processing.core.PApplet.handleDraw(PApplet.java:2290) at processing.opengl.PGL $ PGLListener.display(PGL.java:2643) 在jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:590) 在jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:574) 在javax.media.opengl.awt.GLCanvas $ 9.run(GLCanvas.java:1218) 在jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1036) 在jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:911) 在javax.media.opengl.awt.GLCanvas $ 10.run(GLCanvas.java:1229) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 在java.awt.EventQueue.access $ 200(未知来源) 在java.awt.EventQueue $ 3.run(未知来源) 在java.awt.EventQueue $ 3.run(未知来源) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain $ 1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 在java.awt.EventDispatchThread.run(未知来源)
答案 0 :(得分:0)
我可以确认JOGL的GL2ES2 API中没有GLES20函数glVertexAttribPointer(int indx, int size, int type, boolean normalized, int stride, Buffer buf)
。
它已替换为glVertexAttribPointer(int indx, int size, int type, boolean normalized, int stride, long ptr_buffer_offset)
。
在程序中编译和链接属性相关着色器后,与其使用相关的高级方法如下:
glVertexAttribPointer
的调用,通知OpenGL顶点数据的结构。glEnableVertexAttribArray
启用该属性。glDrawElements
按照IBO指定的顺序绘制VBO顶点。 ptr_buffer_offset
然后引用该绑定缓冲区内的内部偏移量,因此要从缓冲区的开头读取,您只需指定0L
。您拨打glDrawElements
时也是如此。