OpenGL ES - огромная карта, лучшая практика - PullRequest
1 голос
/ 13 января 2010

Если я хочу рендерить только огромную карту, как лучше всего использовать OpenGL ES с мобильным устройством (на базе Android или iPhone)?

Какая структура лучше всего содержит все вершины, нормы и координаты текстуры?

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

Должен ли я использовать drawArrays или drawElements для отправки моих данных в OpenGL ES?

Ну, я вообще не тестировал, но мог бы подумать, что drawElements может быть быстрее, если GFX не использует разделяемую память, так как вам не нужно загружать столько данных. Так как это действительно близко к металлу, что вы думаете? (iPhone основан на ARM, а платформа Android - на Qualcomm (также ARM?))

С уважением,

Friedrich

Ответы [ 2 ]

1 голос
/ 13 января 2010

Теоретически использование объектов буфера вершин должно дать наилучшие результаты. Вы уже привели причины.

Хотя я помню, как слышал в одной из лекций Стэнфорда о разработке для iPhone, использование VBO не дает лучшей производительности, чем использование указателей вершин. Опять же, эта информация немного устарела. Так что переход на VBO на iPhone определенно не будет плохой идеей.

Вплоть до Android 1.5 в реализации OpenGL, которая была вызвана glDrawElements, была утечка памяти . Хотя я бы предположил, что это уже исправлено, я давно его не проверял.

А вот информация о том, как наилучшим образом использовать VBO.

0 голосов
/ 13 января 2010

Мне нравится подход, представленный в этой презентации .Ознакомьтесь со слайдами 26-32.

Презентация предназначена для Android, но должна применяться и к iPhone.В основном, проверьте свои расширения GL, и если вы можете их использовать, вершинные буферы - это путь.

Помните, что ваша целевая архитектура (в обоих случаях ARM), вероятно, не будет иметь FPU, поэтомуизменения будут очень и очень дорогими.

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