UltimAnt
0 / 0 / 0
Регистрация: 28.04.2014
Сообщений: 10
|
|
#1 | |
3D графика, какие библиотеки использовать? - C++07.05.2014, 09:38. Просмотров 3158. Ответов 10
Метки нет Все метки)
(
Ребята, препод-садист дал задание написать программу с кубиком и пирамидой, что бы их можно было вращать, перемещать, масштабировать и отбрасывала тень при источнике света.
причем удаление невидимых граней происходило с использованием алгоритма z-буфера. OpenGL и Direct3D изучил, но там похоже не написать алгоритм z-буфера, почитал про graphics.h, говорят устаревший и не работает на современном компиляторе... какую библиотеку предпочтительно использовать, что бы реализовать алгоритм z-буфер? Добавлено через 48 минут хотя появился ещё 1 вопрос: возможно ли на OpenGL использовать алгоритм z-буфера?
0
|
|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
07.05.2014, 09:38 |
Я подобрал для вас темы с готовыми решениями и ответами на вопрос 3D графика, какие библиотеки использовать? (C++):
10
про библиотеки в VS C++ (какие библиотеки нужны для функций 'cout' и 'cin') - C++
Какие математические библиотеки вы используете? - C++ Какие библиотеки\фреймворки используете именно вы - C++
научите использовать библиотеки - C++ |
taras atavin
3888 / 1762 / 92
Регистрация: 24.11.2009
Сообщений: 27,566
|
|
07.05.2014, 09:51 | #2 |
Если не прописано в задании, то какие выберешь. С учётом доступности/платности и собственных знаний, так как не исключено существование экзотических 3D-библиотек в ограниченном количестве копий и при этом ещё и стоящих, как несколько лет коллективной работы и малоизвестных даже в узких кругах.
Добавлено через 1 минуту Да ну! А ничего, что вся 3D-графика базируется именно на z-буфере?
0
|
UltimAnt
0 / 0 / 0
Регистрация: 28.04.2014
Сообщений: 10
|
|
07.05.2014, 20:07 [ТС] | #3 |
ну нам задали каждому свой алгоритма(художника, Варнока, Уоткинса, иерархический z-буфер и др.), мне вот достался Алгоритм z-буфера использовать. препод рассказывал как с помощью матриц поворачивать объект, масштабировать и т.д. зачем? если все это в библиотеках, например, OpenGL это действие записывается в 1 строчку.
Возможно ли расписать матрицы в OpenGL вручную? если нет, то к какой "примитивной" библиотеке можно сослаться?
0
|
UltimAnt
0 / 0 / 0
Регистрация: 28.04.2014
Сообщений: 10
|
|
07.05.2014, 22:29 [ТС] | #5 |
Он, как я понял, приводит примеры на Си с библиотекой graph.h, я инет обшарил в поисках graph.h, но только нашел graphics.h для С++, у меня подозрения, что там функции немного по другому выглядят
0
|
EVP
488 / 256 / 43
Регистрация: 14.12.2010
Сообщений: 509
|
|
07.05.2014, 23:50 | #6 |
Открою секрет: Андре Ламот - это Чак Норрис создания игр
![]() Он взял и написал свой 3D конвейер заодно с растеризатором ![]() Код у него сишный, но смотри на математику, которую он использует. Математика годится и для других языков..
0
|
taras atavin
3888 / 1762 / 92
Регистрация: 24.11.2009
Сообщений: 27,566
|
|
08.05.2014, 09:11 | #7 |
Дай первокласнику ту самую библиотеку, врядли он матрицу поворота даже заполнит. Одно дело - оптимизация или исполнение на GPU и совсем другое понимание собственных действий.
Под конкретную сцену можно много чего наворотить, но библиотека то универсальная и кроме z-буфера ничего другого предложить не может. Я, кстати, делал z-буфер в самом приложении вместо библиотеки, ничего сложного там нет. Но то была самописная библиотека, а z-буфер был здорово не стандартный, линейный вместо плоского и привязанный к определённому порядку построения рёбер, а использовался только для удаления частей рёбер, причём, криволинейных, так что его пришлось вынести в приложение. Плоский же z-буфер ещё проще, вполне универсален и обязательно входит во все универсальные рендеры.
0
|
UltimAnt
0 / 0 / 0
Регистрация: 28.04.2014
Сообщений: 10
|
|
08.05.2014, 12:42 [ТС] | #8 |
то есть надо использовать OpenGL только для открытия окна приложения, а прорисовку объекта вручную?
0
|
taras atavin
3888 / 1762 / 92
Регистрация: 24.11.2009
Сообщений: 27,566
|
|
08.05.2014, 12:50 | #9 |
Нет. OpenGL как раз и предназначена для прорисовки, тебе надо только подготовить данные для визуализации. Плоский z-буфер - основа всякого универсального рендера, хоть библиотечного, хоть прикладного, так как именно он вполне универсален и не зависит ни от самой сцены, ни от порядка передачи объектов, а тем более рёбер и вертексов рендеру, но достаточно прост, чтоб при любой сложности сцены минимально нагружать GPU.
0
|
Kuzia domovenok
|
|
08.05.2014, 13:37 | #10 |
taras atavin, имелось в виду, очевидно, что им задали сделать что-то типа софтварного рендера. То есть к z-буферу openGL это будет иметь довольно отдалённое отношение. По сути, его задание состоит в том, чтобы программа получала на вход 3д-сцену, сама софтварно её рендерила в растр, применяя либо z-буффер, либо что угодно...
А вывод растра на экран может осуществлятся хоть OpenGL, хоть любым другим способом - это чисто интерфейс его работы, а не суть задания!
0
|
taras atavin
3888 / 1762 / 92
Регистрация: 24.11.2009
Сообщений: 27,566
|
|
09.05.2014, 09:08 | #11 |
Тогда при чём здесь вообще 3D-библиотеки? Вот только кто сказал, что надо самому рендерить? Рендерить - одно, а преобразовать сцену так, чтоб в ней не осталось невидимых вертексов, порезав скрещиваюшиеся и пересекаюшиеся полигоны по линиям кажущихся и действительных пересечений и удалив из результата невидимые новые полигоны и целиком не видимые старые полигоны, а потом передать на рендеринг в библиотечный рендер - совсем другое. Кроме того, ему же тень нужна. А на какой полигон тень отбрасывать? Только на "землю"? Если в одну точку упала тень двух объектов, то тень одного из них падает и на второй объект. Какой объект на какой тень должен отбросить? Скажите, здесь z-буфер не применим?
0
|
09.05.2014, 09:08 | |
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
09.05.2014, 09:08 |
Привет! Вот еще темы с ответами:
11
Какие модули (библиотеки) используются программами ОС Windows - C++ Какие есть библиотеки для работы с MYSQL - C++ Какие есть библиотеки для парсинга JSON? - C++ Фоторобот на С++: какие библиотеки для этого потребуются - C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |