gpt4 book ai didi

Android Canvas 和硬件加速?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:04:14 32 4
gpt4 key购买 nike

大家好,我想知道是否可以绘制到屏幕外的 Canvas/Bitmap 并利用硬件加速,或者我是否必须在 onDraw() 方法中绘制查看

例如,我通过执行以下操作绘制到屏幕外位图:

Bitmap.Config config = Bitmap.Config.ARGB_8888;
Bitmap buffer = Bitmap.createBitmap(200, 200, config);
Canvas canvas = new Canvas(buffer);
Paint paint = new Paint();
paint.setColor(Color.RED);
canvas.drawLine(0, 0, 100, 100, paint);

但是 canvas.isHardwareAccelerated() 返回 false 并且绘图速度较慢:

protected void onDraw(Canvas canvas) {

Paint paint = new Paint();
paint.setColor(Color.RED);

canvas.drawLine(0, 0, 100, 100, paint);
}

其中 canvas.isHardwareAccelerated() 返回 true。有没有办法在利用硬件加速的同时绘制到位图?还是必须在 onDraw 方法中直接绘制到屏幕上?

谢谢你的帮助 :) 我知道在 Java 中我可以在屏幕外绘制一个 BufferedImage 并且它会被硬件加速但也许它在手机上不一样......

最佳答案

因为在第一种情况下,您创建了 Canvas ,它没有硬件层支持。此外,截至目前,您不能仅在任何 Canvas 上启用 HWA,它必须属于一个 HWA View 。

另一方面, View 可以访问系统的硬件功能。您可以通过调用 setLayerType( LAYER_TYPE_HARDWARE) 来使用它,如文档中所述:

Indicates that the view has a hardware layer. A hardware layer is backed by a hardware specific texture (generally Frame Buffer Objects or FBO on OpenGL hardware) and causes the view to be rendered using Android's hardware rendering pipeline, but only if hardware acceleration is turned on for the view hierarchy. When hardware acceleration is turned off, hardware layers behave exactly as software layers.

此外,性能问题更多地适用于渲染部分,而不是绘图部分。所有绘制操作都记录为图片对象。它是 HWA 发挥重要作用的渲染操作。

关于Android Canvas 和硬件加速?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14785060/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com