2013-05-04 102 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。