#performance #opengl #3d #rendering #minecraft
#Производительность #opengl #3D #рендеринг #Minecraft
Вопрос:
В настоящее время у меня есть объемные данные для мира, хранящиеся в виде массива логических значений. Затем я проверяю каждый пустой блок, и если у него есть непустые соседи, грани прорисовываются. Это мешает мне отправлять кучу граней на видеокарту с использованием opengl.
Сейчас я работаю над вставкой и удалением блоков, но я не уверен, как это сделать быстро. Изменить данные объема достаточно просто, но я не хочу пересчитывать все вершины из данных объема каждый раз, когда кто-то вставляет или удаляет блок. Мне пришло в голову просто добавить блок в буфер вершин в конце существующих данных вершин, но тогда у меня нет хорошего способа уничтожить его, поскольку у меня нет способа сопоставить данные тома и буфера вершин.
Приветствуется любая помощь.
Комментарии:
1. Об этом лучше спросить на gamedev.stackexchange.com .
Ответ №1:
Я думаю, вы могли бы добавить к нему тег «algorithm». Я думаю, что способ, которым работает настоящий minecraft, заключается в том, что он хранит блоки размером 16x16x16, и каждый раз, когда обновляется один маленький блок, он просто повторно обновляет информацию о вершинах для этого большего блока.
Насколько я понимаю, я могу сильно ошибаться. Я уверен, что вы можете узнать больше об этом по всему Интернету и на форумах minecraft. Там обсуждается множество алгоритмов minecraft.
Комментарии:
1. Пожалуйста, придерживайтесь цивилизованного языка.
2. Что насчет того, что мой пост не был цивильным?
3. «Действительно, это все ответы, которые вы получили? Отстой.»
Ответ №2:
Octree может помочь вам пересчитать только что измененный блок.