2011-05-25 60 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