Я делаю игру, похожую на Minecraft, с использованием OpenGL, и мне интересно, какое решение является лучшим для гибкого рендеринга без потери производительности. Я имею в виду, что есть разные типы блоков с разными способами рисования: обычные блоки — это простые кубы с текстурами, лестницы — более сложные, а жидкие блоки, такие как вода и лава, нуждаются в обновлении текстуры. У меня есть кусок со списком отображения. Каждый блок имеет свой тип (значение байта). По этому значению я могу найти "полное" представление блока (оно является общим для всех блоков одного типа и содержит имя, метод рисования и дополнительную информацию). Теперь мне нужно убрать отрисовку невидимых граней (если у блока есть сосед слева, нам не нужно рисовать его левую грань). Но это означает, что мне нужно передать 6 аргументов в метод рисования (или массив, или маску). Это хороший способ рисования, или я выбрал глупое решение? Что вы можете порекомендовать для рисования разных типов блоков по-своему?
for(int x = 0; x < 16; x++){
for(int y = 0; y < 128; y++){
for(int z = 0; z < 16; z++){
GL11.glPushMatrix();
GL11.glTranslatef(x, y, z);
BlockTypes.getBlockType(blocks[x][y][z].type).draw();
GL11.glPopMatrix();
}
}
}