Форум программистов, компьютерный форум, киберфорум
Программирование графики
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 27.01.2017
Сообщений: 2

3D движок вручную, какие инструменты выбрать?

19.01.2019, 14:07. Показов 2256. Ответов 5

Студворк — интернет-сервис помощи студентам
Всем добрый день, интересует вопрос по поводу того, какие библиотеки использовать для непосредственного написания своего 3D движка. В качестве языка рассматриваю С/С++, но в целом не имеет значения. Не ставлю над этим проектом каких-либо серьезных задач, просто хочется понять как движки устроены внутри реализовав самостоятельно необходимую объектную архитектуру, векторную геометрию, освещение, сглаживание и прочее. Посмотрел в сторону OpenGL, но в связи с обилием множества встроенных функций это не совсем то, что я ищу. Подскажите, пожалуйста, знающие люди какой-либо инструмент в котором, грубо говоря, нет ничего кроме DrawPoint и приходилось бы все реализовывать самостоятельно.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.01.2019, 14:07
Ответы с готовыми решениями:

Какие инструменты
Всем привет! Можете подсказать какие инструменты используются в данном проекте, высылаю файл... Заранее спасибо, если не сложно, можно...

Какие инструменты использовать?
Здравствуйте. У нас, в школе в Украине, есть эдакий конкурс научных исследовательских работ. Я решил сделать по информатике, а точнее...

Какие инструменты администрирования MySQL вы используете?
Вопрос не совсем по PHP, но относится к PHP Developer'ам (профессионалам) (извиняюсь, если не тот раздел)... Какой инструмент вы...

5
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
19.01.2019, 14:30
Kot_v_losinah, Двумерный массив unsigned (можно и в виде union с ARGB структурой для доступа к самим компонентам цвета без ручных битовых операций и сдвигов),имитирующий буфер кадра (битмап примерно так же устроен можно и его пользовать - именно набор сканлайнов для формата 32 bit/пиксель).
DrawPoint там как такового нет но это как бы установка элемента массива. Он ежели что прекрасно в DC окна выбрасывается (что массив что битмап) чем и имитируется двойная буферизация.
Прекрасно подходит что для растерезирующего что для трассирующего софтверного рендера. Примерно так же всегда и изучали как графический конвейер устроен изнутри во все времена. В досовские времена к примеру этот массив просто напрямую в видеопамять выбрасывался (или в видеопамяти сразу и жил при наличии аппаратной многостраничности у видеокарты).

Добавлено через 6 минут
Цитата Сообщение от Kot_v_losinah Посмотреть сообщение
какие библиотеки использовать
Из остального там разве что std::vector и смарт-поинтеры понадобится или их самодельные аналоги - что вам лично из этого удобнее. ну и библиотека линейной алгебры, причем не общая а для 2d и 3d случая в однородном пространстве - т.е. в общем то свое написать быстрее чем найти готовое именно под это.

Добавлено через 5 минут
Цитата Сообщение от Kot_v_losinah Посмотреть сообщение
просто хочется понять как движки устроены внутри реализовав самостоятельно необходимую объектную архитектуру
Движки или 3D конвейер/API? Движок уже обычно пользует готовый аппаратный 3D конвейер и его API. По сути задача конвейера - отрисовка тектсурированого освещенного треугольника в огромных количествах оных треугольников в секунду, что софтверно в нужных количествах давно не достижимо. Задача же движка уже другая - создание и логика работы (типа анимации и т.д.) сцены аки набора оных треугольников с логическим разделением их групп на меши и т.д.
1
0 / 0 / 0
Регистрация: 27.01.2017
Сообщений: 2
19.01.2019, 17:06  [ТС]
Спасибо за ответ, о некоторых вещах не задумывался. Немного не корректно поставил вопрос в результате чего получил ответ не совсем на то, что спрашивал изначально. Собственно, интересует посредством чего можно организовать общение с буфером экрана, чтобы это что-то не тянуло в себе кучу не нужных мне зависимостей. Имел на текущий момент дело разве что с экранной отрисовкой прямо на виджете в Qt.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
19.01.2019, 17:20
Kot_v_losinah, Буфер экрана это тупо массив лежащий одним линейным куском. То же самое z-буфер и остальные буфера какие ни придумывай - отличаются они только назначением и форматом элемента(ячейи). Для удобства доступа еще массив указателей на начало каждой строки (скан-лайна) буфера чтобы быстро можно было адресовать по x,y, вернее y,x . Битмап, именно так и устроен - это массив указателей на сканлайны (еще можно и отдельным куском каждую строку сделать что было очень актуально во времена когда одним куском можно было не более 64kb памяти выделять).
Ну а в окно это попадает путем его отправки в DC которое получается через хендл. Не знаю дает Qt прямой доступ к хендлу окна и функциям WinAPI как VCL или не дает как FireMonkey, но под капотом для винды они это точно все пользуют. Это штатный способ отрисовки битмапки и т.п. в окно и другого в общем то нет. Но если не дает то как бы проще в визуалстудии это поиметь создав пустойдесктопный проект. Там создание главного окна средствами WinAPI и получение его DC при приходе события WM_PAINT по которому оный буфер и надо кинуть в DC уже сразу есть.
0
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
21.01.2019, 08:09
https://habr.com/ru/post/249139/
1
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
23.01.2019, 01:22
Цитата Сообщение от Kot_v_losinah Посмотреть сообщение
реализовав самостоятельно необходимую объектную архитектуру, векторную геометрию, освещение, сглаживание и прочее.
Цитата Сообщение от Kot_v_losinah Посмотреть сообщение
нет ничего кроме DrawPoint и приходилось бы все реализовывать самостоятельно.
Тогда учебник типа Машинная графика на ЭВМ + самодельный софтверный рендер с нуля.

Из готовых библиотек можно взять любой способ что закрашивает субпиксель на экране. Например гуглить рисование фракталов С++, там как раз субпиксельно и работают. Или взять glut только чтобы закрашивать пиксели и все.

Никакой скорости и практической пользы не будет, лютый матан, море кода и велосипедов. Зато все свое…как и хотели.

Добавлено через 7 минут
Если крутая видеокарта, как вариант можно попробовать написать рендер на GPU например 3д фракталов Mandelbulb 3d. Так простые формулы очень сложных поверхностей+ вероятно скорость работы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.01.2019, 01:22
Помогаю со студенческими работами здесь

ES2018 - Какие асинхронные и псевдомногопоточные инструменты есть в языке?
Добрый вечер! Какие инструменты есть в современном pure JavaScript, помимо Promise, для этих целей? В чём их отличие?

Какие есть платформы и инструменты для создания GUI?
Доброго времени суток, очень хотелось бы работать с gui интерфейсом. Но с Tkinter мне работать не нравится, быть может есть какие-нибудь...

Инструменты для мониторинга купленных ссылок, кто какие использует?
Ранее периодически ссылки смотрел вручную, ведя таблицу в экселе. Сапой сайтов не двигал, только статьями. т.е. ссылок не особо много было....

Какие инструменты нужны для разработки оффлайн карты на Android?
Мне на дипломный проект нужно создать ГИС на андроид, какие инструменты посоветуете, какую литературу стоит прочесть? Сам прочел много...

Какие инструменты контроля изменений дизайна для баз Ln есть?
Какие инструменты контроля изменений элементов дизайна БД Lotus Notes есть - контроль даты и подписи элемента дизайна, изменения кода...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru