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

Различия и преимущества SurfaceView против GLSurfaceView на Android?

В настоящее время я играю с 2D-графикой в ​​android и использую простой старый SurfaceView для рисования Drawables и Bitmaps на экране. Это работает нормально, но там немного заикается в движении спрайтов, и мне интересно, как это сделать в реальном времени (но не ужасно быстро) с этим.

Я знаю, что существует GLSurfaceView, который использует OpenGL, но мне любопытно, насколько это имеет значение. Является ли обычное аппаратное обеспечение SurfaceView ускоренным, или мне нужно использовать OpenGL? Какую разницу в скорости можно ожидать от переключения на OpenGL и сколько изменения кода потребуется для переключения (логика игры - это все в отдельном объекте, который предоставляет упорядоченный массив чертежей SurfaceView)?

4b9b3361

Ответ 1

Насколько я могу судить, вам нужно использовать openGL для ускорения HW. Но не принимайте это как должное и ждать других ответов ^^

Если это действительно так, ускорение должно быть очень важным. Любое 2D-приложение должно работать как минимум на 20 кадров в секунду (обычно меньше полигонов, чем 3D-приложения).

для этого потребуется значительная часть кода, но 1) в качестве первой попытки вы можете попробовать только 1 квадрат VBO и каждый раз менять матрицу, а 2) ваш рендеринг кажется уже полностью инкапсулированным, поэтому он должен упростить многое.

Ответ 2

SurfaceView не аппаратное ускорение по умолчанию. если вы хотите получить ускорение HW используйте GLSurfaceView, которые используют opengl и аппаратно ускоряются.