| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 задавать не надо, т.к. координаты уже преобразованы). Лицевые они или нет в данном случае неважно. Это вариант будет работать для случаев, когда грани не пересекаются. |