OpenGL VBO错误导致系统退出

时间:2011-05-25 13:50:40

标签: exception opengl crash vbo

我正在使用JOGL来加载OBJ模型并使用VBO在GL画布中显示它。一切都是大部分工作,但有些模型的顶点必须变形。例如,我有一个箭头对象,必须能够使箭头的变形,使尾部长/短,同时保持箭头的对象几何形状。 这适用于渲染器的一个实例,但是当我尝试将另一个实例添加到场景时,系统将退出GLDrawElements调用并输出此错误日志。谁能指出我正确的方向?我完全失去了。

    #
# 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.display(Ljavax/media/opengl/GL;Lcom/sonogenics/camera/SimpleProjection;FFFLcom/sonogenics/playout/Field;)V+436
...

2 个答案:

答案 0 :(得分:4)

使用GDebugger查看哪个电话会导致错误并检查您的电话中的无效数据。

非常棒。 :)

答案 1 :(得分:1)

ACCESS_VIOLATION意味着你告诉GL读取“好”区域之外的内存:)

在Drawelements中有几个原因,您可以检查设置GL缓冲区的位置以及传递给DrawElements的内容。

  • - 你的一个缓冲区是一个糟糕的地址,导致它从谁那里读取 知道在哪里
  • - 你的一个偏差,大步,太长,导致GL超越了 分配结束
  • - 你所说的你在模型中的顶点数太长了......造成它 超越结束 分配
  • - 您的VBO分配对于步幅*数量来说不够大 绿党