Ответ 1
Холст, возвращенный SurfaceView.lockCanvas()
, не может быть аппаратным ускоренным в данный момент.
Я разрабатываю ICS и пытаюсь понять, почему Canvas.isHardwareAccelerated() всегда будет возвращать FALSE при использовании Холст внутри SurfaceView.
Я пробовал очень простой пример: http://android-coding.blogspot.com/2011/05/drawing-on-surfaceview.html Или этот: http://jmsliu.com/199/android-canvas-example.html
Я даже модифицировал их, чтобы не иметь никаких холстов-вызовов внутри цикла рисования думая, что я мог бы получить некоторые неподдерживаемые операции ускорения HW для некоторых вызовов рисования. Я проверил этот список в разделе "Неподдерживаемые операции рисования" developer.android.com/guide/topics/graphics/hardware-accel.html но я не делаю этого.
Я использую флаг рендеринга Force GPU внутри параметров разработчика вместе с внутри манифеста, также я указываю minSDK/targetSDK >= 14.
View.isHardwareAccelerated вернет TRUE, в то время как Canvas.isHardwareAccelerated всегда будет возвращать FALSE.
Я видел, что Canvas.java имеет hard-encodeded return false для isHardwareAccelerated(), а HardwareCanvas.java возвращает true. По некоторым причинам, я не получаю HW-путь, почему?
Можно ли ускорить холст внутри SurfaceView?
Спасибо
Холст, возвращенный SurfaceView.lockCanvas()
, не может быть аппаратным ускоренным в данный момент.
кажется, что существует новый метод api для скрытия unlockHardwareCanvas
в android.view.Surface
и вот пример:
http://androidxref.com/5.1.0_r1/xref/frameworks/base/tests/HwAccelerationTest/src/com/android/test/hwui/HardwareCanvasSurfaceViewActivity.java
вы можете использовать relfecation в производственных средах.
Вы заявили в своем манифестах Android, что ваше приложение хочет использовать ускорение hw?
Это будет что-то вроде
<application android:hardwareAccelerated="true" ...>
В зависимости от того, что вы хотите сделать, может быть полезно только активировать ускорение только для активности или окна, см. http://developer.android.com/guide/topics/graphics/hardware-accel.html для Детали.
Руди