Как быстро вставлять и удалять блоки в мире Minecraftian?

#performance #opengl #3d #rendering #minecraft

#Производительность #opengl #3D #рендеринг #Minecraft

Вопрос:

В настоящее время у меня есть объемные данные для мира, хранящиеся в виде массива логических значений. Затем я проверяю каждый пустой блок, и если у него есть непустые соседи, грани прорисовываются. Это мешает мне отправлять кучу граней на видеокарту с использованием opengl.

Сейчас я работаю над вставкой и удалением блоков, но я не уверен, как это сделать быстро. Изменить данные объема достаточно просто, но я не хочу пересчитывать все вершины из данных объема каждый раз, когда кто-то вставляет или удаляет блок. Мне пришло в голову просто добавить блок в буфер вершин в конце существующих данных вершин, но тогда у меня нет хорошего способа уничтожить его, поскольку у меня нет способа сопоставить данные тома и буфера вершин.

Приветствуется любая помощь.

Комментарии:

1. Об этом лучше спросить на gamedev.stackexchange.com .

Ответ №1:

Я думаю, вы могли бы добавить к нему тег «algorithm». Я думаю, что способ, которым работает настоящий minecraft, заключается в том, что он хранит блоки размером 16x16x16, и каждый раз, когда обновляется один маленький блок, он просто повторно обновляет информацию о вершинах для этого большего блока.

Насколько я понимаю, я могу сильно ошибаться. Я уверен, что вы можете узнать больше об этом по всему Интернету и на форумах minecraft. Там обсуждается множество алгоритмов minecraft.

Комментарии:

1. Пожалуйста, придерживайтесь цивилизованного языка.

2. Что насчет того, что мой пост не был цивильным?

3. «Действительно, это все ответы, которые вы получили? Отстой.»

Ответ №2:

Octree может помочь вам пересчитать только что измененный блок.