Как я могу увеличить расстояние (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);
Моя сцена работает правильно... но как только я немного отхожу от своих объектов, они исчезают (как красные шары на изображении).: Сеть, где я взял график
Я понимаю, что красные шары находятся вне поля зрения и не будут показаны. Так что я хочу, чтобы увеличить расстояние, где он перестает рисовать. Я пытался увеличить 3000.0f, но не работает!
gluPerspective(45.0f,(GLfloat)width/(GLfloat)height, 0.5f, 3000000.0f);
Поэтому мой вопрос: как я могу увеличить расстояние, когда openGL останавливает рисование объектов?
2 ответа
Я понял, что происходит, поэтому я сам отвечаю на это, чтобы помочь другим людям в будущем:
Смена zfar работает нормально. У меня была проблема (не включенная в вопрос для упрощения), был мой скайбокс. Скайбокс был маленьким и скрывал объекты с неба. На рис2 это легко увидеть!
Так что если у вас есть похожая проблема, просто дважды проверьте ваш скайбокс. Если бы это была проблема с zfar, то все должно быть черным, а не текстурой неба!
Ближайшие и дальние значения определяют точность буфера глубины. Чем выше соотношение между ближним и дальним расстоянием, тем больше ошибок точности буфера глубины вы получите. Таким образом, ваш буфер глубины может фактически позволять рисовать объекты, но если они маленькие и расположены близко друг к другу, они все равно могут быть не видны (отклонены или перерисованы).
Если вы увеличите значение с 3000.0f до 10000.0f, оно все равно может работать. Насколько велики ваши объекты?
Зачем вам в первую очередь такое большое расстояние просмотра? Может быть, есть другие подходы, которые лучше соответствуют вашим потребностям.