Я хотел бы сделать игру из многих кубов и планирую разместить ее на мобильных платформах, а также в Интернете с помощью webgl. Моя проблема в том, что когда я делаю вызов drawelements на кубе, я беру удар по частоте кадров. Есть ли способ, которым я могу сделать один призыв к призыву, чтобы нарисовать их? Единственное различие между кубами - это положение и цвет.Самый эффективный способ рисования нескольких одинаковых объектов?
ответ
Я столкнулся с той же проблемой. Я задал подобный вопрос и сам ответил вчера. Посмотрите на:
Efficient way of drawing in OpenGL ES
Вы хотите создать вершинные буферы и загружать их в память видеокарты только один раз gl.bufferData. Затем используйте ссылку на этот буфер каждый раз, когда вы выполняете gl.drawElements или gl.drawArrays. До следующего раза, когда содержимое 3D-сцены изменится, вы можете использовать этот буфер, который загружается в память графической карты.
Следуйте модели UITableView в том, как они деактивируют ячейки. Я бы построил объект, который отслеживает объекты, которые вы нарисовали, и связывает их с идентификатором. Затем вы можете просто удалить их с указанным идентификатором. Если вы знаете, что собираетесь рисовать много версий одного и того же объекта, используйте этот объект для минимизации рендеринга/распределения.
Если вы используете массивы Vertex для glDrawElements(), я бы предложил вместо этого использовать объекты буфера вершин. Это будет хранить сторону сервера данных (в GRAM) вместо клиентской стороны (в системной памяти). Таким образом вы можете сделать вызовы glDrawElements() с гораздо меньшим количеством CPU < -> Накладные расходы на передачу данных GPU.
В качестве альтернативы вы можете хранить кубы в списках отображения. Таким образом, вы можете использовать glTranlate() для перемещения куба, а затем просто вызвать список отображения, чтобы отобразить его. Единственное предостережение от использования отображаемых списков состоит в том, что все, что вы делаете в списке отображения, является неизменным; вы не можете изменять вызовы в списке отображения без полной перекомпиляции.
OpenGL ES не поддерживает списки отображения. –
- 1. Самый эффективный способ рисования в silverlight
- 2. Самый эффективный способ рисования сгруппированных boxplot matlab
- 3. Самый эффективный способ создания коллекций объектов?
- 4. Эффективный способ рисования градиентных прямоугольников
- 5. Самый эффективный метод рисования нескольких квадрациклов в OpenGL
- 6. Java-paintComponent самый эффективный способ рисования миллионов квадратов из массива
- 7. Самый эффективный способ создания многомерного массива одинаковых символов? [C++]
- 8. Самый эффективный способ загрузки нескольких изображений
- 9. Самый эффективный способ удержания нескольких Eigen MatrixXd
- 10. Самый эффективный способ частичного рисования UIView в drawRect:
- 11. Самый эффективный способ для рисования строковых шаблонов с помощью javascript
- 12. Самый эффективный способ рисования кнопок на верхней части окна?
- 13. Самый эффективный способ рисования 4 строк в приложении для iPhone?
- 14. Самый эффективный способ рисования кругов для контуров многоугольника
- 15. Самый эффективный способ поиска объектов в списке объектов
- 16. Самый эффективный способ выполнения &&?
- 17. Это самый эффективный способ?
- 18. Более эффективный способ создания нескольких объектов
- 19. Самый эффективный способ получить списки?
- 20. Самый эффективный способ удаления объекта из списка
- 21. Эффективный способ создания списка одинаковых номеров?
- 22. Самый эффективный способ подсчета кликов
- 23. Самый эффективный способ выполнить это
- 24. laravel middleware. Самый эффективный способ
- 25. Самый эффективный способ тестирования ссылок
- 26. Самый эффективный способ добавить оценку?
- 27. Самый эффективный способ хранения ресурсов
- 28. Самый эффективный способ реализовать это?
- 29. Самый эффективный способ разделить предложение
- 30. Самый эффективный способ вызова mysqli_fetch_assoc
Являются ли позиции кубов относительно друг друга со временем меняющимися? – LarsH
Они со временем меняются, так как мне нужны разрушаемые объекты. – Xavier
См. Также: http://stackoverflow.com/questions/9352355/draw-many-of-the-same-object-quickly-in-opengl – jwrush