我正在学习OpenGL并且遇到了gluPerspective的问题。这是我在Init()
中使用的代码// Calculate The Aspect Ratio Of The Window
// The parameters are:
// (view angle, aspect ration of the width to the height,
// The closest distance to the camera before it clips,
// FOV, Ratio, The farthest distance before it stops drawing)
gluPerspective(45.0f,(GLfloat)width/(GLfloat)height, 0.5f, 3000.0f);
我的场景工作正常..但是当我离开我的物体一点点时,它们会消失(如图中的红球)。 : Web where I took graph from
我知道红球在视线之外并且不会显示。所以我想要的是增加它停止绘制的距离。我尝试增加3000.0f但是没有用!。
gluPerspective(45.0f,(GLfloat)width/(GLfloat)height, 0.5f, 3000000.0f);
所以我的问题是:如何增加openGL停止绘制对象的距离?
答案 0 :(得分:4)
我弄清楚发生了什么,所以我自己回答这个问题以帮助其他人:
更改zfar可以正常工作。我遇到的问题(不包括在简化的问题中)是我的天空盒。 Skybox很小,正在用天空隐藏物体。在pic2中很容易看到!
因此,如果你有类似的问题,请仔细检查你的天空盒。如果它是一个zfar问题,应该是everthing 是黑色而不是天空纹理!
答案 1 :(得分:3)
near和far值定义深度缓冲区的精度。 near和far之间的比率越高,您获得的深度缓冲精度误差就越大。因此,您的深度缓冲区实际上可能允许绘制对象,但如果它们很小并且彼此靠近,它们仍然可能不可见(被拒绝或被透支)。
如果从3000.0f增加到10000.0f,它可能仍然有效。你的物品有多大?
为什么你首先需要那么大的观看距离?也许还有其他方法可以更好地满足您的需求。