|
0 / 0 / 0
Регистрация: 27.01.2017
Сообщений: 2
|
|
3D движок вручную, какие инструменты выбрать?19.01.2019, 14:07. Показов 2256. Ответов 5
Всем добрый день, интересует вопрос по поводу того, какие библиотеки использовать для непосредственного написания своего 3D движка. В качестве языка рассматриваю С/С++, но в целом не имеет значения. Не ставлю над этим проектом каких-либо серьезных задач, просто хочется понять как движки устроены внутри реализовав самостоятельно необходимую объектную архитектуру, векторную геометрию, освещение, сглаживание и прочее. Посмотрел в сторону OpenGL, но в связи с обилием множества встроенных функций это не совсем то, что я ищу. Подскажите, пожалуйста, знающие люди какой-либо инструмент в котором, грубо говоря, нет ничего кроме DrawPoint и приходилось бы все реализовывать самостоятельно.
0
|
|
| 19.01.2019, 14:07 | |
|
Ответы с готовыми решениями:
5
Какие инструменты Какие инструменты использовать? Какие инструменты администрирования MySQL вы используете? |
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 19.01.2019, 14:30 | |||
|
Kot_v_losinah, Двумерный массив unsigned (можно и в виде union с ARGB структурой для доступа к самим компонентам цвета без ручных битовых операций и сдвигов),имитирующий буфер кадра (битмап примерно так же устроен можно и его пользовать - именно набор сканлайнов для формата 32 bit/пиксель).
DrawPoint там как такового нет но это как бы установка элемента массива. Он ежели что прекрасно в DC окна выбрасывается (что массив что битмап) чем и имитируется двойная буферизация. Прекрасно подходит что для растерезирующего что для трассирующего софтверного рендера. Примерно так же всегда и изучали как графический конвейер устроен изнутри во все времена. В досовские времена к примеру этот массив просто напрямую в видеопамять выбрасывался (или в видеопамяти сразу и жил при наличии аппаратной многостраничности у видеокарты). Добавлено через 6 минут Добавлено через 5 минут
1
|
|||
|
0 / 0 / 0
Регистрация: 27.01.2017
Сообщений: 2
|
|
| 19.01.2019, 17:06 [ТС] | |
|
Спасибо за ответ, о некоторых вещах не задумывался. Немного не корректно поставил вопрос в результате чего получил ответ не совсем на то, что спрашивал изначально. Собственно, интересует посредством чего можно организовать общение с буфером экрана, чтобы это что-то не тянуло в себе кучу не нужных мне зависимостей. Имел на текущий момент дело разве что с экранной отрисовкой прямо на виджете в Qt.
0
|
|
|
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 | |
|
1
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|||
| 23.01.2019, 01:22 | |||
|
Из готовых библиотек можно взять любой способ что закрашивает субпиксель на экране. Например гуглить рисование фракталов С++, там как раз субпиксельно и работают. Или взять glut только чтобы закрашивать пиксели и все. Никакой скорости и практической пользы не будет, лютый матан, море кода и велосипедов. Зато все свое…как и хотели. Добавлено через 7 минут Если крутая видеокарта, как вариант можно попробовать написать рендер на GPU например 3д фракталов Mandelbulb 3d. Так простые формулы очень сложных поверхностей+ вероятно скорость работы.
0
|
|||
| 23.01.2019, 01:22 | |
|
Помогаю со студенческими работами здесь
6
ES2018 - Какие асинхронные и псевдомногопоточные инструменты есть в языке? Какие есть платформы и инструменты для создания GUI? Инструменты для мониторинга купленных ссылок, кто какие использует? Какие инструменты нужны для разработки оффлайн карты на Android? Какие инструменты контроля изменений дизайна для баз Ln есть? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
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, то после закрытия окошка. . .
|