Android: Canvas vs OpenGL

У меня есть приложение для рисования, в котором пользователь может рисовать линии пальцем, настраивать цвет, толщину, и т. д. Когда пользователь рисует , Я конвертирую скопированные точки X / Y из MotionEvent в SVG Paths , а также создаю Android Path и затем рисую Android Path на экране с помощью a Canvas и фиксация пути SVG в базе данных приложения.

Я следую модели, использованной в FingerPaint , в которой строки «в процессе» отрисовываются на лету повторными вызовами ] invalidate () (и, таким образом, onDraw () ), и после завершения строки и начала новой строки предыдущая строка (строки) рисуется в onDraw () из нижележащего Canvas Bitmap , при этом строки выполнения снова генерируют повторяющиеся повторные отрисовки.

Это отлично работает в этом приложении - пока вы не начнете вращать нижележащее Bitmap , чтобы компенсировать поворот устройства, поддерживая возможность «увеличения» на поверхности рисования и, таким образом, необходимость масштабирования нижележащего Bi tmap и т. д. Так, например, когда устройство повернуто, а рисунок увеличен, когда пользователь рисует, нам нужно масштабировать И повернуть растровое изображение в onDraw (), и это абсолютно скользит.

I Я посмотрел на SurfaceView , но поскольку он по-прежнему использует тот же механизм Canvas , я не уверен, что увижу заметное улучшение ... поэтому мои мысли обращаются к OpenGL. Я где-то читал, что OpenGL может выполнять вращение и масштабирование практически «бесплатно», и даже встречал слухи (третий комментарий) о том, что Canvas может исчезнуть в будущих версиях.

По сути, в следующих версиях. , Я немного застрял между решениями Canvas и OpenGL ... У меня есть приложение для 2D-рисования, которое, кажется, идеально подходит для модели Canvas , когда находится в одном состоянии, так как нет постоянные перерисовки происходят как в игре (например, когда пользователь не рисует, мне не нужно перерисовывать), но когда пользователь рисует, мне нужна максимальная производительность, необходимая для выполнения некоторых все более сложных вещей с поверхность ...

Будем рады любым мыслям, указателям и предложениям.

15
задан Community 23 May 2017 в 11:53
поделиться