Как я могу увеличить расстояние (zfar / gluPerspective), когда openGL останавливает рисование объектов? - PullRequest
3 голосов
/ 14 марта 2011

Я изучаю 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);

Моя сцена работает правильно ... но как только я немного отхожу от своих объектов, они исчезают (как красные шары на изображении).: Frustrum example Сеть, где я взял график из

Я понимаю, что красные шары находятся вне поля зрения и не будут отображаться.Так что я хочу, чтобы увеличить расстояние, где он перестает рисовать.Я пытался увеличить 3000.0f, но это не работает!о проблеме: Pic1 Pic2

Ответы [ 2 ]

4 голосов
/ 14 марта 2011

Я понял, что происходит, поэтому я сам отвечаю на это, чтобы помочь другим людям в будущем:

Смена zfar работает нормально.У меня была проблема (не включенная в вопрос для упрощения), был мой скайбокс. Скайбокс был маленьким и прятал объекты с неба.На рис2 это легко увидеть!

Так что, если у вас есть похожая проблема, просто дважды проверьте ваш скайбокс.Если бы это была проблема с zfar, то все должно быть черным, а не текстурой неба!

3 голосов
/ 14 марта 2011

Ближайшие и дальние значения определяют точность буфера глубины.Чем выше соотношение между ближним и дальним расстоянием, тем больше ошибок точности буфера глубины вы получите.Таким образом, ваш буфер глубины может фактически позволять рисовать объекты, но если они маленькие и расположены близко друг к другу, они все равно могут быть не видны (отклонены или перерисованы).может все еще работать.Насколько велики ваши объекты?

Зачем вам в первую очередь такое большое расстояние просмотра?Может быть, есть другие подходы, которые лучше соответствуют вашим потребностям.

...