2011-05-25 61 views
1

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

# 
# 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 
... 
+0

我们需要更多的代码,调试输出和信息。崩溃日志只是说你做了一些非法的事情,导致GL驱动程序崩溃(可能是混合了句柄/缓冲区指针等等......如果没有更多的信息,很难说)。您可以尝试在OpenGL调试器中运行您的应用程序,并查看它是否捕获任何东西。 – Macke 2011-05-25 13:54:04

+0

@Chris,@Macke:我们这里有一个进程崩溃,而不是系统崩溃。司机撞车实际上会降低整个系统。 – 2011-05-26 03:23:50

+0

@Ben:我们有一个用户端驱动程序崩溃,因为在nvoglnt.dll(NVidia的WindowsNT OpenGL驱动程序)中发生了访问冲突。取决于你的驱动程序的定义。 – Macke 2011-05-26 07:01:25

回答

4

使用GDebugger,看看什么叫会导致错误并为您在您的通话GL无效数据。

这真是太棒了。 :)

1

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

在Drawelements有可能是一对夫妇的原因,你想查一下您设定GL缓冲区以及您传递给DrawElements的内容。

  • 您的缓冲区-One是一个错误的地址,使其从谁 知道你的偏移量,进步在哪里
  • 多功能一体阅读,太长造成GL超越分配的 结束
  • - 你你说的是在模型绿党的数量太久......使其 超越 分配结束
  • - 您的VBO分配不够大步幅*的数 verts