2013-05-04 139 views
0

我有一個簡單的Opengl PROGRAMM,我通過調用glVertex3f和模式GL_LINE_LOOPOpen GL的深度緩衝問題

在這裏畫的三角形就是我得到:

enter image description here

您可以在廣場看到,顯然,我的模型底部的一些三角形(藍色)被繪製在前景的上方。

你知道是什麼原因造成的嗎?有沒有辦法避免它?

+1

什麼是你的深度範圍(minz和maxz)。你如何設置投影矩陣? – doug65536 2013-05-04 22:57:40

+0

@ doug65536你的意思是? glMatrixMode(GL_PROJECTION);gluPerspective(60。,Width/Height,0,1000); – lezebulon 2013-05-04 23:02:45

+1

@lezebulon:距離爲0的近平面不能真正與透視投影一起使用。 – derhass 2013-05-04 23:22:49

回答

1

gluPerspective(60。,Width/Height,0,1000);

near-z不能小於等於0。它必須是一個大於零的正數。

0

近Z不能爲零。見the opengl.org documentation for gluPerspective

相關部分:

深度緩衝器精度由用於zNear 和zFar指定的值的影響。 zFar與zNear的比率越大,深度緩衝區的有效性越小,以區分彼此靠近的表面 。

如果R = zFar/zNear,大致LOG2(R)的深度緩衝器精度比特被丟失。由於[R接近 無窮大zNear接近0,zNear絕不能設置爲0。