[英]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
當前從不硬件加速。 這意味着您將在軟件中繪制TextureView
的Canvas
,但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.