带有lockCanvas()的Android TextureView硬件加速

All*_*lle 16 java android hardware-acceleration android-canvas

我正试图用我的画布使用Android的硬件加速.我曾经有过一个SurfaceViewlockCanvas()用来获得画布的画面,我稍后会画画,但我改变了,TextureView因为我无法SurfaceView使用硬件加速.我目前正试图让这个画布使用硬件加速.

Canvas canvas = this.lockCanvas();
System.out.println(this.isHardwareAccelerated() + ", " + canvas.isHardwareAccelerated());
Run Code Online (Sandbox Code Playgroud)

给我输出:true,false(this是a TextureView)

有谁知道为什么canvas不是硬件加速,以及如何做到这一点?

编辑:据我所知,似乎我必须使用OpenGL.但是,我仍然想知道是否有任何宣布的计划可以为这样的画布提供硬件加速.

Rom*_*Guy 9

TextureView仅当应用程序是硬件加速时才起作用,但Canvas它从中返回时lockCanvas()目前从不加速硬件.这意味着你将在里面画TextureViewCanvas软件,但TextureView本身会使用GPU绘制.目前,获得硬件加速Canvas的唯一方法是使用onDraw(Canvas)View 的方法.


sda*_*bet 6

检查硬件加速文章.

基本上,如果您希望TextureView硬件加速,则必须确保在TextureView的上下文中启用硬件加速,即下列之一:

  • 在应用程序级别: <application android:hardwareAccelerated="true" ...>
  • 在活动级别: <activity android:hardwareAccelerated="true" />
  • 在窗口级别:

getWindow().setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

请注意,使用TextureView实际上必须使用硬件加速:

TextureView只能在硬件加速窗口中使用.在软件中渲染时,TextureView不会绘制任何内容.