Если вы используете Vertex Arrays для вашего glDrawElements (), я бы предложил вместо этого использовать Vertex Buffer Objects. Это будет хранить данные на стороне сервера (в GRAM), а не на стороне клиента (в системной памяти). Таким образом, вы можете выполнять вызовы glDrawElements () с гораздо меньшими накладными расходами при передаче данных GPU <->.
Кроме того, вы можете хранить свои кубы в списках отображения. Таким образом, вы можете использовать glTranlate () для перемещения куба, а затем просто вызвать список отображения для его рендеринга. Единственное предостережение в использовании списков отображения - то, что вы делаете в списке отображения, является неизменным; Вы не можете изменить вызовы в списке отображения, не перекомпилировав его полностью.