OpenGL: дальние объекты появляются поверх ближних объектов

Я пытаюсь собрать быструю демонстрацию с использованием iOS GLKit для визуализации карты розничного магазина с использованием OpenGL с использованием исходных файлов САПР. Мне удалось визуализировать стены и проходы в 2D, а затем программно добавить немного искусственной глубины, чтобы создать серию кубов. Все это выглядит хорошо, если смотреть сверху вниз, но я заметил, что когда я включил пол (со значением z, которое значительно ниже проходов и стен, некоторые из этих объектов на самом деле визуализируются под полом:

проходы ниже уровня пола

... однако, если вы повернете модель, вы увидите, что на самом деле ничего нет ниже пола, а некоторые проходы визуализируются за пределами стены:

введите здесь описание изображения

Вы можете просмотреть код по адресу StoreMapGLKitViewController.m. кажется мне довольно простым, но я уверен, что делаю какую-то ошибку новичка OpenGL.


person Ryan Rife    schedule 04.10.2016    source источник
comment
Вот видео о странной проблеме отсечения youtube.com/watch?v=1Vls6gwJvFQ.   -  person Ryan Rife    schedule 08.10.2016


Ответы (2)


Поэтому, когда вы возитесь со значениями Z и z = 0 для всех вещей, я полагаю, вы все еще сможете видеть некоторые из ваших стен и проходов, но они также будут немного свисать внизу. Пока вас это не волнует (это демонстрация, верно), тогда это должно быть хорошо на данный момент, я бы сказал.

person user2328077    schedule 04.10.2016
comment
Да, это нормально, но я не должен видеть проходы наверху стен снаружи. - person Ryan Rife; 04.10.2016

Кончается тем, что буфер глубины не корректировался, поэтому тест глубины ничего не делал. Добавление кода ниже исправило это.

GLKView *view = (GLKView *)self.view;
view.drawableDepthFormat = GLKViewDrawableDepthFormat24;
person Ryan Rife    schedule 12.10.2016