Какой самый простой способ для отрисовки bounding box?
На ум приходят два способа.
Это генерирование вершин куба по min and max,
и я думаю можно сделать гораздо проще растянуть единичный куб с помощью матрицы.
Собственно свой велосипед писать не хочется, может быть кто имел с этим дело и может дать линки
IBets
> Это генерирование вершин куба по min and max,
> и я думаю можно сделать гораздо проще растянуть единичный куб с помощью
> матрицы.
Ну так попробуй так и так. В чём проблема? Это же пятиминутное дело.
Получил восемь вертексов и нарисовал.
Ну вы даете. Я же вам уже отвечал:
https://gamedev.ru/code/forum/?id=238096
eDmk
> Ну вы даете. Я же вам уже отвечал:
Животрепещущая тема, видимо)
IBets
да как угодно рисуй, если у тебя сотни и тысячи тогда уже можешь задуматься об инстансинге. Если меньше, залей в один буфер и отрисуй как одну модель.
IBets
> Какой самый простой способ для отрисовки bounding box?
а зачем простой ? нужно рисовать самым быстрым или самым крутым через тесселяцию
Рисуй, как быстрее и проще. Дебаг-лееры так и пишутся.
https://en.m.wikibooks.org/wiki/OpenGL_Programming/Bounding_box
eDmk
> Ну вы даете. Я же вам уже отвечал:
> https://gamedev.ru/code/forum/?id=238096
Почитал твой ответ. Хранить баундинг бокс как 8 вершин - так себе решение. Лучше хранить min max (то есть AABB) + трансформ.
MrShoor
Т.е. каждый раз при отрисовке считать вершины заново?
У меня они считаются 1 раз и только при трансформации исходных точек.
Потом просто на MVP-матрицу умножаю. Рисую так:
MrShoor
> Хранить баундинг бокс как 8 вершин - так себе решение.
Я в системе дебага 12ю ребрами рисую )
IBets
Делай большой динамический юниформ буфер с возможностью выборочного обновления данных; для каждого бокса храни там матрицу; при отрисовке используй glBindBufferRange и единичный куб.
eDmk
> Т.е. каждый раз при отрисовке считать вершины заново?
Что считать? Там 3 if-а. И при отрисовке чего? Куба? Построение буфера намного дороже, чем 3 if-а для вершин куба. Поэтому если надо рисовать, то есть смысл построить буфер и закешировать именно его.
> Рисую так:
Ну у тебя так то вообще софтварный рендер. И однопоточный насколько я понял? Если будешь прикручивать многопоточность - то и асинхронность появится. И тогда придется формировать буфер, как я выше написал, и этот буфер можно закешировать.
А как ты для своего варианта делаешь проверку "точка в кубе или нет"? Или "пересекает луч куб или нет"?
BingoBongo
> Я в системе дебага 12ю ребрами рисую )
Это пожалуйста. Делай 12 ребер для отрисовки. Но ты же поди не хранишь куб как vec3 points[8] ?
eDmk
Да я уже на Compute Shader считаю Bounding Box для кадра анимации. Я уже сделал, просто хотел что бы кто-нибудь готовую матрицу подкинул или генерирование Cube by min and max
IBets
У меня на асме есть:
Тема в архиве.