0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 11
1

Буфер глубины (Qt)

14.03.2015, 15:47. Показов 1427. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
почему glEnable(GL_DEPTH_TEST) работает только с выпуклыми фигурами?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2015, 15:47
Ответы с готовыми решениями:

Qt Буфер глубины
Всем здрасьте. У меня какие то необъяснимые проблемы с буфером глубины. А может и не с ним.. В...

Буфер глубины
Почему то не работает скрытие задних граней и т.д.Нарисовал пирамиду с помощью двух вееров...

Линейный буфер глубины
Как бы эту штуку сделать по умному? Сейчас делаю так: В вершинном шейдере: camSpacePosition...

Не работает буфер глубины
Не могу понять почему не работает буфер глубины. Часть треугольника которая должна углубиться по...

10
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
14.03.2015, 16:11 2
С чего ты взял?
0
0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 11
14.03.2015, 17:24  [ТС] 3
взял пример с какого-то сайта (икосаэдр) и переставил одну вершину.https://www.cyberforum.ru/atta... 1426343016
Изображения
 
0
0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 11
14.03.2015, 18:52  [ТС] 4
я прочитал, что эта функция включает проверку глубины методом z-буфера. т.е. к каждому пикселю привязывается число z-глубина. когда происходит вывод пикселей, то сравниваются их z-числа. но в таком случае все должно работать. видимо используется какой-то другой метод?
0
Эксперт GPSS
552 / 411 / 105
Регистрация: 02.07.2010
Сообщений: 1,721
14.03.2015, 22:32 5
А что именно не устраивает. как на вид так все работает

Добавлено через 30 секунд
серый полигон перекрылся зеленым
0
0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 11
14.03.2015, 23:31  [ТС] 6
это был икосаэдр, я одну вершину как-бы оттянул от центра. должно быть наооборот: зеленое под серым. вот еще картинка с другого угла.https://www.cyberforum.ru/atta... 1426365068
Изображения
 
0
Эксперт GPSS
552 / 411 / 105
Регистрация: 02.07.2010
Сообщений: 1,721
14.03.2015, 23:47 7
Хотя в общем случае многоугольники могут иметь сложную форму, в OpenGL
существуют жесткие ограничения на форму примитивных многоугольников. Во-
первых, стороны примитивного многоугольника не должны пересекаться (т.е. это
простой многоугольник). Во-вторых, многоугольники должны быть выпуклыми (без
выемок и зубцов). Говоря точнее, многоугольник является выпуклым, если отрезок,
соединяющий две любых его точки, целиком лежит внутри многоугольника.

Если вершины многоугольника не лежат в одной
плоскости, то после поворотов в пространстве, изменения точки наблюдения и после
проецирования вершины могут выглядеть как углы невыпуклого многоугольника.
Представьте, например, четырехугольник, углы которого немного отклонены от одной плоскости, и что вы смотрите на него практически "с ребра". Вы увидите многоугольник, напоминающий бабочку, корректность отображения которого не гарантирована. Эта ситуация не слишком надуманна, она вполне может возникнуть при аппроксимации поверхности четырехугольниками, вершины которых принадлежат этой поверхности. В случае использования треугольников описанная проблема невозникает.
у вас икосаэдр из треугольников следовательно невыпуклого многоугольника не может быть в принципе, на втором рисунке лично я вижу корректное смещение вершины , а на первом возможно это связанно с порядком построения, потому как какой многоугольник что перекрывает как раз и определяется при построении
0
0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 11
15.03.2015, 00:08  [ТС] 8
не понял, почему из треугольников нельзя построить невыпуклый многоугольник? на втором рисунке действительно все выводится верно, на первом - нет. за порядком построения должна следить функция glEnable(GL_DEPTH_TEST), но этого не происходит. выкладываю проект.https://www.cyberforum.ru/atta... 1426367292
Вложения
Тип файла: rar openGL_qt.rar (7.1 Кб, 4 просмотров)
0
652 / 233 / 46
Регистрация: 24.01.2013
Сообщений: 716
15.03.2015, 11:57 9
Астерс, все там работает, закомментируй строку - glEnable(GL_CULL_FACE);
1
0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 11
15.03.2015, 13:36  [ТС] 10
да, действительно так все работает. спасибо. но я не понимаю, почему. функция glEnable(GL_CULL_FACE) отключает отрисовку внутренних поверхностей, как она мешает работе glEnable(GL_DEPTH_TEST)? да и к тому же при ее отключении идет потеря производительности...
0
652 / 233 / 46
Регистрация: 24.01.2013
Сообщений: 716
15.03.2015, 14:05 11
Читай документацию - https://www.opengl.org/wiki/Face_Culling
0
15.03.2015, 14:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2015, 14:05
Помогаю со студенческими работами здесь

Opengl SFML C++ буфер глубины
Opengl SFML C++ Помогите. Не могу разобраться, что не так. Не отображается нормально объект....

Проблема с FBO: не рендерится буфер глубины
Всем привет. Возникла проблема с рендером буфера глубины. Вот код создания буфера: void...

Буфер глубины. С++ (Что я делаю не так?)
Вместо изображение "карты высот" получаю стабильно просто белую текстуру, вне зависимости от...

OpenGL WinAPI C++ не работает буфер глубины
Написал маленький код на OpenGL WinAPI C++ В инете прочесал не один сайт с примером по глубине с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru