Подтвердить что ты не робот

Android: выбор между SurfaceView и OpenGL (GLSurfaceView)

Есть ли способ решить фронт на основе ожидаемой сложности игры/приложения на этапе планирования, следует ли использовать обычный холст-рисунок в SurfaceView или идти с OpenGL?

Я играл с Canvas и мне нужно только 2D-движение, и на довольно новом телефоне я получаю довольно приличную производительность с кучей примитивных объектов и несколькими растровыми изображениями, которые бегают по экрану на сплошном фоне.

Можно ли сказать, что если я собираюсь рисовать фоновые изображения и увеличивать количество перемещаемых объектов и рисовать поверх них, то я должен перейти прямо к OpenGL?

4b9b3361

Ответ 1

Все, что я могу сказать, это то, что это зависит от того, сколько спрайтов вы собираетесь использовать. Крис Прюетт из Google также хорошо документировал эту часть.

Google I/O 2009 и Google I/O 2010.

Ниже приведена картинка с одного из его слайдов, относящихся к вашей теме: enter image description here

С этими знаниями вы должны пойти с OpenGL, используя расширение draw_texture. Не забудьте запросить строку и проверьте, поддерживается ли draw_texture на самом устройстве.

Для получения дополнительной информации, связанной с развитием игры в целом, см. this.

Ответ 2

SurfaceView

A GLSurfaceView - это SurfaceView, который можно визуализировать с помощью OpenGL. Выбор между ними прост:

Если вы знакомы с OpenGL и нуждаетесь в том, что он предоставляет, используйте GLSurfaceView. В противном случае используйте SurfaceView. OpenGL является низкоуровневым. Если вы еще не знакомы с этим, это обязательство учиться. Если вам нужен только 2D-чертеж, SurfaceView использует высокий уровень, разумно высокопроизводительный холст. С ним очень легко работать.

Если у вас нет оснований использовать GLSurfaceView, вы должны использовать регулярный SurfaceView. Я бы предположил, что если вы еще не знаете что вам нужно GL, тогда вы, вероятно, этого не сделаете.

OpenGL

OpenGL сможет легко обрабатывать вращения и масштабировать.

Честно говоря, вам, вероятно, нужно будет изучить много OpenGL, чтобы это сделать, особенно связанных с темами:

Геометрическое освещение (или просто его отключение) Выбор (выбор геометрии рисовать на нем). Пиксельные карты. Отображение текстур. Mipmapping. Кроме того, обучение OpenGL для этого может быть излишним, и вы должны быть довольно хорошо, чтобы сделать его эффективным.

Вместо этого я бы рекомендовал использовать графические компоненты игры библиотека, построенная поверх openGL, например:

Cocos2d

libgdx

Любой из перечисленных здесь двигателей

Источник

Разница между SurfaceView и GLSurfaceView в Android

Android: Canvas vs OpenGL