Android: выбор между SurfaceView и OpenGL (GLSurfaceView) - PullRequest
19 голосов
/ 02 марта 2011

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

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

Ответы [ 2 ]

29 голосов
/ 02 марта 2011

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

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

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

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

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

10 голосов
/ 06 сентября 2013

SurfaceView

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

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

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

OpenGL

OpenGL будетуметь легко справляться с поворотами и масштабированием.

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

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

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

Cocos2d

libgdx

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

Источник

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

Android: Canvas и OpenGL

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