当前位置: 首页 > news >正文

【Android】 GPU过度绘制实现原理

Android GPU过度绘制实现原理

调试GPU过度绘制开关

Android开发者模式应用提供了“调试GPU过度绘制”这个开关。打开这个开关,可以进行GPU绘制次数检测(用户性能优化)

效果类似下述图片

  • 过度绘制1次(Render2次):浅蓝色
  • 过度绘制2次(Redner3次): 绿色
  • 过度绘制3次以上红色

    该工具性能优化,合理优化APP布局,减少布局嵌套。用以进行性能优化(比如减少带宽占用)

GPU过度绘制实现原理

从代码角度理解一下Android如何实现该功能

第一部分:Alpha计数。

Setting开发者模式

  • 开发者模式中控制“GPU过度绘制”的对象,为DebugGpuOverdrawPreferenceController,点击开关实际上更新的是名为"debug_hw_overdraw"的属性。

    HWUI
  • Properties.h/cpp 中属性进行了宏定义,如果属性值为show或show_deuteranomaly(这俩在颜色上有些区别,见后面颜色部分),会打开过度绘制功能。
  • SkiaPipeline,renderframe时调用renderOverDraw

SKIA

  • SkOverDrawCanvas,用于给每个像素的Alpha通道+1。核心在颜色矩阵。

    颜色矩阵又4行5列。5列为 RGBA+便移。 4行是计算后的 RGBA值。
    下述矩阵前三行为0,不对RGB做修改(算出来是0,因为使用了Kplus加法混合模式,增加叠加到目标像素。所加上去不会变)。第4行,每次会Alpha+1(1/255就是一个亮度单位)
staticconstexprfloatkIncrementAlpha[]={// R G B A 偏移0,0,0,0,0,// 输出 R0,0,0,0,0,// 输出 G0,0,0,0,0,// 输出 B0,0,0,0,1/255f// 输出 A};

综上,绘制一次A+1。两次就是A+2。

第二部分:颜色绘制

HWUI

  • 创建SkPaint画笔,设置绘制颜色。创建SkOverdrawColorFilter,根据aphal数量绘制颜色。
A R G B 0x00000000 ->透明黑色 绘制0次 0x00000000 ->透明黑色1次 0x2f0000ff ->半透明蓝色2次 0x2f00ff00 ->半透明绿色3次 0x3fff0000 ->半透明红色4次 0x7fff0000 ->半透明红色5


SKIA

  • 根据Alpha的值计算。比如 2/255 * 255 -> 颜色数组2->半透明蓝色
http://www.jsqmd.com/news/812404/

相关文章:

  • geo优化公司哪家好?2026年选对服务商看这4个核心维度
  • 铝合金空调格栅技术解析:钢质百叶窗、锌钢格栅、锌钢铝合金百叶窗、防火电动百叶窗、防雨百叶窗、不锈钢百叶窗、手动百叶窗选择指南 - 优质品牌商家
  • 职场登山者的晋升密码——面试题库类内容的爆款公式
  • 从TJA1040到TJA1044:手把手教你升级CAN FD网络,搞定5Mbps高速通信
  • TV Bro:如何用一款开源浏览器让智能电视真正“智能”起来?
  • 让旧电视重获新生:mytv-android如何为安卓4.4设备带来流畅直播体验
  • 基于区块链时间戳的数字文件存证:原理、实践与SoPaper-Evidence工具指南
  • 3步实现电脑风扇智能温控:FanControl.HWInfo插件实战指南
  • 为你的下一个AI项目选择Taotoken,享受官方价折扣与快速接入
  • 企业级电商全栈架构:基于Next.js与Prisma的现代解决方案
  • Perplexity引用导出失效?立即修复的6个隐藏参数配置(含Chrome/Firefox/Safari三端差异对照表)
  • 量子自编码器在多类分类中的优化与应用
  • 今立GEO2.0重磅登场,开源级框架定义全渠道AI搜索智能营销新标准
  • 2026年北京市科学技术进步奖申报全攻略
  • 对比按需计费与套餐计划在长期项目中的成本差异感受
  • 几个常见机器人仿真软件横向对比:功能定位与适用场景
  • OpenClaw-Diary:AI智能体自主学习的自动化日记系统实践
  • ARM ERXMISC2寄存器解析与RAS错误处理实践
  • 45_《智能体微服务架构企业级实战教程》智能助手主应用服务之集成 DeepSeek
  • DesignCon 2017见闻:从眼图到艺术,工程师如何从跨界中汲取灵感
  • 四川盛世钢联国际贸易有限公司 | 四川成都H型钢 | 四川成都工字钢 - 四川盛世钢联营销中心
  • WarcraftHelper魔兽争霸3兼容性修复:让经典游戏在现代系统稳定运行
  • 新手避坑指南:用STM32CubeMX配置大疆C板驱动M2006电机(附完整代码)
  • Mistral Inference 项目本地部署指南:从环境配置到 Python API 实战
  • ARM MPAM技术:缓存资源隔离与监控详解
  • 2026年现阶段,如何选择西安可靠的婚姻法律服务?专业律师深度解析 - 2026年企业推荐榜
  • ESD与TVS:电路防护的精准选择
  • 多模态AI怎么用?三步带你轻松入门
  • 基于ChatGPT与智能音箱的AI语音助手:从架构到部署实战
  • 新闻稿发稿平台推荐:2026AI时代品牌传播权威测评 - 博客湾