簡體   English   中英

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

[英]Android TextureView hardware acceleration with lockCanvas()

我正試圖用我的畫布使用Android的硬件加速。 我曾經有一個SurfaceView ,我使用了lockCanvas()來獲取畫布,后來我將其繪制,但我改為TextureView因為我無法讓SurfaceView使用硬件加速。 我目前正試圖讓這個畫布使用硬件加速。

Canvas canvas = this.lockCanvas();
System.out.println(this.isHardwareAccelerated() + ", " + canvas.isHardwareAccelerated());

給我輸出:true,false( this是一個TextureView

有誰知道為什么canvas不是硬件加速,以及如何制作它?

編輯:據我所知,似乎我必須使用OpenGL。 但是,我仍然想知道是否有任何宣布的計划可以為這樣的畫布進行硬件加速。

TextureView僅在應用程序是硬件加速TextureView起作用,但它從lockCanvas()返回的Canvas當前從不硬件加速。 這意味着您將在軟件中繪制TextureViewCanvas ,但TextureView本身將使用GPU繪制。 目前,獲得硬件加速Canvas的唯一方法是使用View的onDraw(Canvas)方法。

檢查硬件加速文章。

基本上,如果您希望您的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不會繪制任何內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM