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

Я изучаю 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 Сеть, где я взял график

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

    gluPerspective(45.0f,(GLfloat)width/(GLfloat)height, 0.5f, 3000000.0f);

Поэтому мой вопрос: как я могу увеличить расстояние, когда openGL останавливает рисование объектов?

Некоторые фотографии о проблеме: Pic1 Pic2

2 ответа

Решение

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

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

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

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

Если вы увеличите значение с 3000.0f до 10000.0f, оно все равно может работать. Насколько велики ваши объекты?

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

Другие вопросы по тегам