如何增加openGL停止绘制对象的距离(zfar/gluPerspective)?

如何增加openGL停止绘制对象的距离(zfar/gluPerspective)?,opengl,glut,glu,Opengl,Glut,Glu,我正在学习OpenGL,但在透视方面遇到了问题。以下是我在Init()中使用的代码 我的场景很好。。但只要我离开我的物体一点点,它们就会消失(如图中的红色小球) 我知道红球在视野之外,不会出现。所以我想增加它停止绘制的距离。我尝试增加3000.0华氏度,但不起作用 gluPerspective(45.0f,(GLfloat)width/(GLfloat)height, 0.5f, 3000000.0f); 所以我的问题是:如何增加openGL停止绘制对象的距离? 有关此问题的一些图片

我正在学习OpenGL,但在透视方面遇到了问题。以下是我在Init()中使用的代码

我的场景很好。。但只要我离开我的物体一点点,它们就会消失(如图中的红色小球)

我知道红球在视野之外,不会出现。所以我想增加它停止绘制的距离。我尝试增加3000.0华氏度,但不起作用

    gluPerspective(45.0f,(GLfloat)width/(GLfloat)height, 0.5f, 3000000.0f);
所以我的问题是:如何增加openGL停止绘制对象的距离?

有关此问题的一些图片:

近距离值和远距离值定义深度缓冲区的精度。“近”和“远”之间的比率越高,深度缓冲区精度误差就越大。因此,深度缓冲区实际上可能允许绘制对象,但如果对象很小且彼此靠近,它们可能仍然不可见(被拒绝或透支)

如果从3000.0华氏度增加到10000.0华氏度,它可能仍然有效。你的物体有多大


首先,你为什么需要这么大的视距?也许还有其他更适合你需要的方法。

我知道发生了什么,所以我自己回答这个问题,以便将来帮助其他人:

更改zfar工作正常。我遇到的问题是(为了简化问题未包括在内)我的skyboxSkybox很小,用天空隐藏着物体。在图2中很容易看到

因此,如果您有类似的问题,只需再次选中您的skybox。如果这是一个zfar问题,一切都应该
黑色而不是天空纹理

我花了很多时间在谷歌上搜索,找到了很多信息(as),但我不完全明白为什么它不起作用,我应该怎么做。请记住,我正在学习OpenGL。对象的大小:我画了一个1.0f大小的大建筑(吸引轮),然后将其缩放到70.0f。您可以在这里看到对象大小:我在这里遇到的问题是:只需在禁用深度写入的情况下绘制天空盒:glDepthMask(GL_FALSE);绘制天空盒();glDepthMask(GL_TRUE);我在你的回答中添加了这些图片,后来又将它们添加到原始问题中!
    gluPerspective(45.0f,(GLfloat)width/(GLfloat)height, 0.5f, 3000000.0f);