我有一個簡單的Opengl PROGRAMM,我通過調用glVertex3f和模式GL_LINE_LOOPOpen GL的深度緩衝問題
在這裏畫的三角形就是我得到:
您可以在廣場看到,顯然,我的模型底部的一些三角形(藍色)被繪製在前景的上方。
你知道是什麼原因造成的嗎?有沒有辦法避免它?
我有一個簡單的Opengl PROGRAMM,我通過調用glVertex3f和模式GL_LINE_LOOPOpen GL的深度緩衝問題
在這裏畫的三角形就是我得到:
您可以在廣場看到,顯然,我的模型底部的一些三角形(藍色)被繪製在前景的上方。
你知道是什麼原因造成的嗎?有沒有辦法避免它?
gluPerspective(60。,Width/Height,0,1000);
near-z不能小於等於0。它必須是一個大於零的正數。
近Z不能爲零。見the opengl.org documentation for gluPerspective。
相關部分:
深度緩衝器精度由用於zNear 和zFar指定的值的影響。 zFar與zNear的比率越大,深度緩衝區的有效性越小,以區分彼此靠近的表面 。
如果R = zFar/zNear,大致LOG2(R)的深度緩衝器精度比特被丟失。由於[R接近 無窮大zNear接近0,zNear絕不能設置爲0。
什麼是你的深度範圍(minz和maxz)。你如何設置投影矩陣? – doug65536 2013-05-04 22:57:40
@ doug65536你的意思是? glMatrixMode(GL_PROJECTION);gluPerspective(60。,Width/Height,0,1000); – lezebulon 2013-05-04 23:02:45
@lezebulon:距離爲0的近平面不能真正與透視投影一起使用。 – derhass 2013-05-04 23:22:49