Рендеринг объекта без создания нового буфера - PullRequest
0 голосов
/ 19 ноября 2010

У меня есть код, где я сделал куб (используя 12 треугольников), и он движется вперед и назад в направлении z.

Есть ли способ сделать этот куб 5 раз одновременно, скажемразные позиции в пространстве.На данный момент мне пришлось бы создавать новый буфер для каждого куба, что кажется неправильным.

1 Ответ

3 голосов
/ 19 ноября 2010

, если CubeObj.draw () является функцией рисования вашего куба (вероятно, это вызов glVertexPointer, а затем glDrawElements),

glPushMatrix();  //save the current matrix
     glTranslatef(translatex, translatey, translatez);
     //glRotatef(), glScale, etc.

     CubeObj.draw();
glPopMatrix();  //restore the matrix

вызовы glPush / PopMatrix () гарантируют, что команды преобразования в блоке применяются толькок этому конкретному кубу.

Вы можете вызывать функцию рисования вашего объекта несколько раз, не восстанавливая объект.Другими словами, вы можете получить еще одну копию приведенного выше кода и изменить команды преобразования, и у вас будет 2 отдельных куба.

Надеюсь, это помогло.

РЕДАКТИРОВАТЬ:

убедитесь, что у вас есть вызов glLoadIdentity () в верхней части вашей функции отображения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...