我正在用Java Android制作一个应用程序,并在硬件加速的SurfaceView上进行自定义绘图。在此我使用了很多路径,矩形以及最重要的是使用BlurMaskFilter制作的阴影。在添加大量阴影(我正在绘制尽可能少的阴影)之后,这些帧当然开始下降到60fps以下,我认为可以通过使用 问题是:尽管“硬件加速的画布”的渲染时间约为非“硬件加速的”画布的渲染时间的十分之一,但fps的增加幅度几乎不如速度增加所指示的那样快。 也许渲染以外的其他东西会占用时间?在Android Studio Profiler中,似乎 有人可以告诉我为什么解锁画布会发生这种情况吗?我是在做错什么,还是只需要在屏幕上少画些画?
这是我的SurfaceView绘制方法: 如果还有其他相关的技巧可以确保最佳的绘图性能,我也将不胜感激。我真的在任何地方都找不到任何东西。 尽管我已经编程了一段时间,但是我没有那么丰富的经验,所以如果没有任何意义,请与我一起裸露。
感谢任何人的帮助
-拉斯慕斯surfaceHolder.lockHardwareCanvas();
而不是surfaceHolder.lockCanvas();
来轻松解决此问题。 surfaceHolder.unlockCanvasAndPost();
花费了太多时间(30-100毫秒),这时发生了太多事情,因此帧将迅速下降(仅在HA-Canvas中)。
这意味着HA帧速率通常为60fps,但有时会降至40-45,而非HA则保持稳定的50-55fps。public void draw(DrawMethod drawMethod) {
canvas = null;
try {
if(holder.getSurface().isValid()) {
canvas = holder.lockHardwareCanvas();
}
if(canvas != null) {
synchronized (holder) {
drawMethod.draw(canvas); //Draws everything on screen
}
}
} finally {
if(canvas != null) {
holder.unlockCanvasAndPost(canvas);
}
}
}
0 个答案:
没有答案