开发者

OpenGL VBO error causing system exit

开发者 https://www.devze.com 2023-03-08 12:38 出处:网络
I\'m using JOGL with to load an OBJ model and display it in a GL canvas using a VBO. Everything is work for the most part however, there are some models where the vertices must be deformed. For exampl

I'm using JOGL with to load an OBJ model and display it in a GL canvas using a VBO. Everything is work for the most part however, there are some models where the vertices must be deformed. For example, I have an arrow object and must be able to deform the stem of the arrow to make the tail as long/short as needed while maintaining the object geometry for the arrow head. This works fine for one instance of the renderer but when I try and add another one to the scene, the system exits on the GLDrawElements call and outputs this error log. Can anyone point me in the right direction? I'm at a complete loss.

    #
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000069e3e4c8, pid=6544, tid=2692
#
# JRE version: 6.0_21-b06
# Java VM: Java HotSpot(TM) 64-Bit Server VM (17.0-b16 mixed mode windows-amd64 )
# Problematic frame:
# C  [nvoglnt.dll+0x93e4c8]
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

...
Stack: [0x0000000052640000,0x0000000052740000],  sp=0x000000005273ecb0,  free space=3fb0000000000000000k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [nvoglnt.dll+0x93e4c8]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
J  com.sun.opengl.impl.GLImpl.glDrawElements0(IIIJ)V
J  com.sun.opengl.impl.GLImpl.glDrawElements(IIIJ)V
j  com.sonogenics.model.AbstractModelHandler$Renderer.display(Ljavax/media/opengl/GL;)V+196
j  com.sonogenics.model.AbstractModelHandler$Renderer.dis开发者_开发百科play(Ljavax/media/opengl/GL;Lcom/sonogenics/camera/SimpleProjection;FFFLcom/sonogenics/playout/Field;)V+436
...


Use GDebugger to see what call causes the error and check for invalid data in your gl calls.

It's quite awesome. :)


ACCESS_VIOLATION means you told GL to read memory that is outside the the 'good' areas :)

Within Drawelements there are a couple reasons that could be, you want to check where you setup the GL buffers as well as what you are passing into DrawElements.

  • -One of your buffers was a bad address, causing it to read from who knows where
  • -One of your offsets, strides, were too long causing GL to go beyond the end of an allocation
  • -You number of verts you said were in the model was too long... causing it to go beyond the end of the allocation
  • -Your VBO allocation wasn't large enough for the stride * number of verts
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号