Различия и преимущества SurfaceView против GLSurfaceView на Android?
В настоящее время я играю с 2D-графикой в android и использую простой старый SurfaceView для рисования Drawables и Bitmaps на экране. Это работает нормально, но там немного заикается в движении спрайтов, и мне интересно, как это сделать в реальном времени (но не ужасно быстро) с этим.
Я знаю, что существует GLSurfaceView, который использует OpenGL, но мне любопытно, насколько это имеет значение. Является ли обычное аппаратное обеспечение SurfaceView ускоренным, или мне нужно использовать OpenGL? Какую разницу в скорости можно ожидать от переключения на OpenGL и сколько изменения кода потребуется для переключения (логика игры - это все в отдельном объекте, который предоставляет упорядоченный массив чертежей SurfaceView)?
Ответы
Ответ 1
Насколько я могу судить, вам нужно использовать openGL для ускорения HW. Но не принимайте это как должное и ждать других ответов ^^
Если это действительно так, ускорение должно быть очень важным. Любое 2D-приложение должно работать как минимум на 20 кадров в секунду (обычно меньше полигонов, чем 3D-приложения).
для этого потребуется значительная часть кода, но 1) в качестве первой попытки вы можете попробовать только 1 квадрат VBO и каждый раз менять матрицу, а 2) ваш рендеринг кажется уже полностью инкапсулированным, поэтому он должен упростить многое.
Ответ 2
SurfaceView не аппаратное ускорение по умолчанию.
если вы хотите получить ускорение HW
используйте GLSurfaceView, которые используют opengl и аппаратно ускоряются.
Ответ 3
Аппаратное ускорение возможно для обычного SurfaceView с версии 3.0.
http://developer.android.com/guide/topics/graphics/hardware-accel.html