Canvas в SurfaceView - аппаратное ускорение - PullRequest
12 голосов
/ 06 марта 2012

Я занимаюсь разработкой на ICS и пытаюсь понять, почему Canvas.isHardwareAccelerated () всегда будет возвращать FALSE при использовании Canvas внутри 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 имеет жестко закодированный возврат false для isHardwareAccelerated (), в то время как HardwareCanvas.java возвращает true.Я думаю, по некоторым причинам я не получаю путь HW, почему?

Может ли Canvas внутри SurfaceView быть ускоренным HW?

Спасибо

Ответы [ 3 ]

14 голосов
/ 31 марта 2012

Холст, возвращенный SurfaceView.lockCanvas(), в настоящее время не может быть аппаратно ускорен.

4 голосов
/ 20 марта 2015

похоже, что есть новый метод скрытия 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 в производственных средах.

1 голос
/ 06 марта 2012

Вы указали в своем манифесте Android, что ваше приложение хочет использовать ускорение hw?

Это будет что-то вроде <application android:hardwareAccelerated="true" ...>

В зависимости от того, что вы хотите сделать, также может быть полезно активировать ускорение только для действия или окна, см. http://developer.android.com/guide/topics/graphics/hardware-accel.htmlдля деталей.

Руди

...