посмотрел на код mesh.c |
[Nov. 21st, 2022|11:42 am] |
варум… в общем, там хэш-табличка с кубиками 16x16x16. не нравится. переделаю на sparse arrays.
не, подход с хэш-табличкой имеет свои преимущества, и не то чтобы ужас-ужас, но… итерирование и одновременное изменение объекта вообще непонятно почему работает (а код это делает очень активно). в общем, мне не нравится. в том числе и потому, что это сложно будет выделить в независимую библиотеку (придётся таскать с ней UTHash), а я планирую (если не забью раньше) выделить стратегические части (работу с мешами) в библиотечку, которую можно будет использовать без всего остального.
попробую сделать на самописных sparse arrays, посмотрю, что получится. в принципе, хэши чуть-чуть эффективней (в том числе и по памяти) на объектах огромных размеров, где кубики понатыканы не сильно плотно. но на практике у рендера всё плохо уже с 160x160x200, которое изображает дерево (потому что там кубики-листики совершенно не мержатся). уровни от какого-нибудь ace of spades (или его наследников) кое-как грузятся, но редактировать их уже БОЛЬ. так что на практике большие размеры не особо важны (хотя мои sparse arrays можно очень быстро ресайзить, так что они отчасти тоже подходят).
можно будет ещё octree попробовать, с листиками 16x16x16 (в коде в разных местах предполагается наличие этих 16-кубиков, кажется, так что трогать их не хочу без нужды).
вообще, я что-то начинаю думать, что проще выкинуть абсолютно всё, и сделать нормально… |
|
|