Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Отсечение нелицевых граней


Автор: Gaudi 17.12.2007, 00:26
Нужна реализация любого алгоритма отсечения нелицевых граней.
Любая 3d фигура (напр. куб) без использования glEnable (GL_DEPTH_TEST)

Автор: baldina 17.12.2007, 10:42
Gaudi, уточни задачу. 

Если просто не надо рисовать нелицевые, GL_DEPTH_TEST непричем, а используется GL_CULL_FACE и glCullFace().
Если они должны рисоваться, но при этом перекрываться в соответствии с глубиной, без GL_DEPTH_TEST придется самому реализовывать Z-буффер или пользоваться сортировкой граней и выводить их от дальней к ближней (это я сильно упрощаю, там есть тонкости). Тебе это надо?
Наконец может тебе подойдет это: делаешь два прохода, на первом выводишь нелицевые, на втором - лицевые (используя glCullFace).

Автор: Gaudi 17.12.2007, 16:36
Должны рисовать ВСЕ грани и перекрываться в соответствии с глубиной,  объект вращается. Так мне была поставлена задача. Догадываюсь, задача непростая, но может кто-то сталкивался с подобным?

Автор: baldina 17.12.2007, 23:27
Если я правильно понимаю, задача была поставлена не использовать Z буффер opengl, а реализовать нечто самому? Так и не понимаю причем тут нелицевые грани.

Если так, то тебе как минимум потребуется держать в памяти список граней. Применяешь текущую матрицу поворота к координатам граней, далее сортируешь грани от дальней к ближней. Теперь можно выводить на экран (дополнительный поворот в opengl задавать не надо, т.к. координаты уже преобразованы). Лицевые они или нет в данном случае неважно.

Это вариант будет работать для случаев, когда грани не пересекаются. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)