问题描述
|
我正在使用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,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
...
解决方法
使用GDebugger查看导致错误的调用,并检查gl调用中的无效数据。
太棒了。 :)
,ACCESS_VIOLATION意味着您告诉GL读取\'good \'区域之外的内存:)
在Drawelements中,可能有两个原因,您需要检查在哪里设置GL缓冲区以及要传递给DrawElements的内容。
-您的缓冲区之一是错误的地址,导致其从谁那里读取
知道在哪里
-您的补偿(跨度)过长,导致GL超出了
分配结束
-您说过的模型转换次数太长...导致
超越末日
分配
-您的VBO分配量不足以实现跨步*
垂直