Какой самый простой способ рисовать текстуру с OpenGL ES? - PullRequest
14 голосов
/ 06 февраля 2010

Я видел этот сеанс Google IO: http://code.google.com/intl/iw/events/io/2009/sessions/WritingRealTimeGamesAndroid.html
Он говорит, что функция draw_texture является самой быстрой, а VBO - второй быстрее.
Но я не понимаю, как его использовать (метод draw_texture или VBO).

Есть предложения?

Ответы [ 2 ]

20 голосов
/ 07 февраля 2010

Исходный код для теста метода спрайта, упомянутого в видео, доступен здесь:
http://code.google.com/p/apps-for-android/source/browse/#svn/trunk/SpriteMethodTest

Вот пример того, где используется VBO:
http://code.google.com/p/apps-for-android/source/browse/SpriteMethodTest/src/com/android/spritemethodtest/Grid.java#237

Вот пример из того, где используется расширение текстуры рисования:
http://code.google.com/p/apps-for-android/source/browse/SpriteMethodTest/src/com/android/spritemethodtest/GLSprite.java

Однако следует обратить внимание на то, что расширение текстуры рисования на самом деле не являетсясамый быстрый для всех игр, использующих спрайты.Например, во многих играх есть группы спрайтов, которые имеют одинаковое состояние рендеринга.В этом случае гораздо быстрее поместить все спрайты с одинаковым состоянием рендеринга в один и тот же буфер и нарисовать их с помощью одной и той же команды рисования.Команда рисования текстуры не позволяет этого.С помощью команды draw texture вы должны вызывать ее один раз для каждого спрайта.

Это причина, по которой часто используются текстуры атласа.Текстура атласа - это один связанный текстурный объект, в котором много разных изображений.Таким образом, вы можете рисовать спрайты с разными изображениями, не привязываясь к другому объекту текстуры.Все, что вам нужно сделать - это использовать разные текстурные координаты в текстуре атласа.Если и другое состояние рендеринга такое же, как, например, необходимая функция наложения, тогда вы можете объединить спрайты для повышения производительности.

7 голосов
/ 16 февраля 2010

Вот несколько отличных примеров работы Android OpenGL ES.

http://code.google.com/p/android-gl/

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