Производительность и фоновые изображения для OpenGL ES/iPhone

вы можете сделать что-то подобное

const orderedList = Object.keys(list).sort((a, b) => list[a] - list[b]);

, но у вас будет array, потому что object не может иметь порядок и не может сортировать его атрибуты.

7
задан g-dog 8 January 2009 в 19:20
поделиться

6 ответов

Благодаря всем, кто обеспечил информацию об этом. Весь совет выручен так или иначе.

Однако я хотел прояснить, что основной вопрос здесь оказался поведением самого средства моделирования (как подразумевается Andreas в его ответе). После того как я смог получить приложение на устройстве, оно работало очень, намного лучше. Я упоминаю это, потому что до разработки моей игры я видел много сообщений, которые указали, что устройство было намного медленнее, чем средство моделирования. Это могло бы быть верно в некоторых случаях (например, логика общего применения), но по моему опыту, анимация (особенно 3-и преобразования) намного быстрее на устройстве.

3
ответ дан 6 December 2019 в 11:53
поделиться
  1. Не делайте тестирования производительности на средстве моделирования. Когда-либо!
    Различия к реальным аппаратным средствам огромны. В обоих направлениях.
  2. Если Вы тянете фон каждый кадр:
    Не очищайте кадровый буфер. Фон превысит ограничения все это так или иначе.
  3. Вам действительно нужна фоновая структура?
    Что относительно того, чтобы использовать цветовой градиент через цвета вершины?
  4. Попытайтесь использовать режим на 2 бита для структуры.
  5. Поворот всех шагов рендеринга, в которых Вы не нуждаетесь для фона.
    Например: освещение, смешивание, тест глубины...

Если бы Вы могли бы отправить часть своего кода для прорисовки, было бы намного легче помочь Вам.

8
ответ дан 6 December 2019 в 11:53
поделиться

При создании 2D игры есть ли какая-либо причина, Вы не пользуетесь существующей библиотекой? А именно, cocos2d для iPhone может стоить Вашего времени. Я не могу ответить на Ваш вопрос о том, как устранить проблему, делающую все это самостоятельно, но я могу сказать, что сделал точно, что Вы говорите о (наличие одного полноэкранного фона со спрайтами на вершине) с cocos2d, и это работает отлично. (Принятие 60 кадр/с достаточно быстро для Вас.) У Вас могут быть свои причины того, чтобы сделать его самих, но если бы Вы можете, я высоко предложить, по крайней мере, делать быстрый прототип с cocos2d и видеть, не способствует ли это Вам. (Детали и источник для версии iPhone здесь: http://code.google.com/p/cocos2d-iphone/)

5
ответ дан 6 December 2019 в 11:53
поделиться

У меня нет большого опыта с OpenGL, ES, но эта проблема обычно происходит.

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

В OpenGL это является довольно прямым с Объектами Кадрового буфера (FBO's). Unfortunatly я не думаю OpenGL ES, поддерживает их, но он мог бы дать Вам где-нибудь, чтобы начать смотреть.

1
ответ дан 6 December 2019 в 11:53
поделиться

можно хотеть попытаться использовать VBOs (Буферные Объекты Вершины) и видеть, ускоряет ли это вещи. Учебное руководство здесь

Кроме того, я просто видел, что начиная с OpenGL ES v1.1, существует функция, вызванная glDrawTex (Потяните Структуру), который разработан для

быстро представляя фонового рисования, глифов растрового шрифта и 2D элементов структурирования в играх

0
ответ дан 6 December 2019 в 11:53
поделиться
  1. Вы могли использовать объекты кадрового буфера, подобные примеру GLPaint от Apple.
  2. Используйте атлас структуры для уменьшения количества вызовов ничьей, которые Вы выполняете. Можно использовать glTexCoordPointer для установки координат текстуры, который отображает каждое изображение на его правильное положение. Не забудьте устанавливать свой буфер вершины также. Идеально каждый тянет вызов, представит Вашу всю 2D сцену.
  3. Постарайтесь не позволять/запрещать состояния, если это возможно.
0
ответ дан 6 December 2019 в 11:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: