2013-05-05 2 views
1

Я пытаюсь создать простой 3D-лабиринт в opengl. Моя первоначальная идея состояла в том, чтобы иметь сетку из кубов с прозрачными (по коридорам) гранями каждого куба. Тем не менее, я немного беспокоюсь о том, как сделать это эффективно. Я не хочу определять каждый куб отдельно для своего лабиринта, это было бы огромным беспорядком кода (я думаю).3D Maze OpenGL Реализация

Также, нужно было бы создавать новые кубы каждый раз, или я могу определить один куб и просто перевести его, перерисовывая его, чтобы сформировать лабиринт?

+1

Если вы хотите пойти с идеей куба. Заполните всю сетку кубами, а затем используйте алгоритм генерации лабиринта, такой как поиск глубины (http://en.wikipedia.org/wiki/Maze_generation_algorithm), чтобы перемещаться по сетке, удаляя кубы, которые больше не являются частью лабиринта. Код должен быть простым для инициализации кубов. Просто заполните каждую точку сетки. –

ответ

2

Определение каждого куба separetly создаст огромный беспорядок кода, как вы сказали. Также было бы невозможно реализовать случайно созданные лабиринты. И было бы очень утомительно делать какие-либо изменения в лабиринте.

Я бы пошел с «определением одного куба и просто его переводом». Определите функцию, которая отображает куб с центром в начале координат и преобразует его в соответствии с его мировыми координатами.

Я не думаю, что вы должны использовать прозрачность вообще. Просто визуализируйте куб, если он есть, и нет, если его нет.

for(i=0; i<width; i++){ 
    for(j=0; j<height; j++){ 
     if(maze[i][j] == 1){ // Means there is a cube there 
      glPushMatrix(); 
      glTranslatef(j * scale, 0, i * scale); 
      DrawCube(); 
      glPopMatrix(); 
     } 
    } 
} 

Я полагаю, вы могли бы использовать аналогичную структуру для обнаружения столкновений.