僅供參考,以討論代碼,請參閱:StrixaGL Library on Github在顯示列表和多邊形面
我有兩個關鍵問題在我在,我不明白是怎麼發生的那一刻庫,希望你們能幫助我。首先,使用沒有紋理的顯示列表(請參閱com.strixa.gl.Strixa3DElement#draw方法)完美無缺。並且使用不使用顯示列表的紋理也可以很好地工作。我不確定的是,在使用它們時。如果兩者都使用時,JVM崩潰here在與下面的錯誤行145:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000007173ffe0, pid=5104, tid=7284
#
# JRE version: 7.0_05-b05
# Java VM: Java HotSpot(TM) 64-Bit Server VM (23.1-b03 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C [atio6axx.dll+0x129ffe0] atiPS+0xd8010
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# D:\User Data\My Documents\Eclipse Workspace\git\firepenguindiscopanda\fpdp_applet\bin\hs_err_pid5104.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
我可以提供故障轉儲爲好,如果你想看到這一點。我以前從來沒有必須處理JVM崩潰,所以我不知道除了本地OpenGL dll崩潰導致JVM崩潰之外可能會發生什麼。其次,當我有我的紋理繪圖(通過禁用我的代碼的顯示列表部分)時,紋理繪製在多邊形的錯誤面上。我已經嘗試使用GL2#glFrontFace和GL2#GL_CW和GL2#GL_CCW來改變繞線順序,但這些東西都不起作用,紋理仍然繪製在(從我的角度來看)背面。然後,我嘗試手動倒轉點添加的順序。那也沒有做到。因此,這也會影響照明,因爲任何繪製的物體都將從內部點亮,而不是從外部點亮。
任何人都不知道這裏發生了什麼?
更新
首先,這裏是發生了什麼的更明確的圖像:
(前壁(最接近牆觀衆),用紅色標出,看起來是看不見的,但後牆完全不透明,在這種情況下,我甚至添加了表面法線,使面部應該是正確的。不僅如此,我還啓用了照明並將繪製的立方體設置爲藍色。可悲的是,這不是我所看到的。也許這會讓人更深入瞭解我的問題。
此外,如果你好奇,我加載什麼,這裏的OBJ文件的內容:
# Blender v2.63 (sub 0) OBJ File: ''
# www.blender.org
mtllib pony.mtl
o Cube
v -1.000000 -1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 1.000000 0.999999
v -0.999999 1.000000 -1.000001
v 1.000000 1.000000 -1.000000
v 1.000000 1.000000 1.000000
vn -0.000000 -1.000000 0.000000
vn 0.000000 1.000000 -0.000000
vn -1.000000 0.000000 -0.000000
vn 0.000000 -0.000000 -1.000000
vn 1.000000 -0.000000 0.000000
vn -0.000000 0.000000 1.000000
usemtl Material
s off
f 1//1 2//1 3//1 4//1
f 5//2 8//2 7//2 6//2
f 1//3 5//3 6//3 2//3
f 2//4 6//4 7//4 3//4
f 3//5 7//5 8//5 4//5
f 5//6 1//6 4//6 8//6
而且MTL文件的內容:
# Blender MTL File: 'None'
# Material Count: 1
newmtl Material
Ns 96.078431
Ka 0.000000 0.000000 0.000000
Kd 0.000000 0.011431 0.640000
Ks 1.000000 1.000000 1.000000
Ni 1.000000
d 1.000000
illum 2
所有的二,響應olamedia:這裏是轉儲:link because of character limit
更新[1]
修正了由gluPerspective扭轉我的「近」與「遠」參數繪製錯誤我的多邊形的問題。現在問題在於崩潰,以及爲什麼會發生。
更新[2]
修正了驅動程序崩潰的問題。如果我移動代碼以將紋理加載到顯示列表中,它就可以正常工作。
是。如果近端和遠端翻轉,則法線的Z分量反轉,並且剔除反轉。正面被剔除,後面被保留。這正是你所看到的(正如我們前面所討論的)。正如我前面所猜測的那樣,完整的轉儲清楚地顯示出崩潰位於驅動程序的顯示列表呈現代碼中,該代碼永遠不會崩潰。也就是說,這是一個驅動程序錯誤。在其他機器上嘗試你的applet,看它是否運行。否則,在我們可以進一步幫助之前,您必須先發布代碼。 – Gene