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

Android关闭硬件加速对PorterDuffXfermode的影响

Android关闭硬件加速对PorterDuffXfermode的影响

 

跑的版本minSdk=33

编译SDK=34

import android.content.Context
import android.graphics.Bitmap
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.graphics.PorterDuff
import android.graphics.PorterDuffXfermode
import android.util.AttributeSet
import androidx.appcompat.widget.AppCompatImageViewclass MyView : AppCompatImageView {private var mBmp: Bitmap? = nullprivate val H = 400fprivate val W = 400fprivate var closeGPU = false //true 关闭硬件加速。constructor(ctx: Context, attrs: AttributeSet) : super(ctx, attrs) {if (closeGPU) {setLayerType(LAYER_TYPE_SOFTWARE, null)}mBmp = Bitmap.createBitmap(W.toInt(), H.toInt(), Bitmap.Config.ARGB_8888)setImageBitmap(mBmp)}override fun onDraw(canvas: Canvas) {super.onDraw(canvas)val paint = Paint()circleTarget(canvas, paint)rectSource(canvas, paint)}private fun circleTarget(c: Canvas, paint: Paint) {paint.style = Paint.Style.FILLpaint.isAntiAlias = truepaint.color = Color.REDval radius = W / 2 // 或者 H/2 ,因为是正方形。c.drawCircle(W / 2, H / 2, radius, paint)}private fun rectSource(c: Canvas, paint: Paint) {paint.style = Paint.Style.FILLpaint.isAntiAlias = truepaint.color = Color.BLUEval mode = PorterDuffXfermode(PorterDuff.Mode.SRC_IN)paint.xfermode = modeval left: Float = W / 2val top: Float = H / 2val right: Float = Wval bottom: Float = Hc.drawRect(left, top, right, bottom, paint)}
}

 

 

没有关闭硬件加速,closeGPU=false:

505ee603f49c4a38ae81e5d49657a701.png

 

 

 

关闭硬件加速后,closeGPU=true:

540dc5641ac94116b5d5f52d11738161.png

 

 

具体到PorterDuffXfermode,关闭硬件加速,跑出来的结果符合预期。

 

 

 

 

 

Android图形图像处理:马赛克(Mosaic)效果_android对图片部分区域做马赛克-CSDN博客文章浏览阅读5.8k次。以图形图像界经典的实验例图Lenna为例,当手指在图片上滑过后,形成马赛克的: 写一个MosaicView继承自AppCompatImageView:package com.zhangphil;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Can..._android对图片部分区域做马赛克https://blog.csdn.net/zhangphil/article/details/87812785

Android性能:高版本Android关闭硬件加速GPU渲染滑动卡顿掉帧-CSDN博客文章浏览阅读521次,点赞8次,收藏8次。CPU返回后,会直接将GraphicBuffer提交给SurfaceFlinger,告诉SurfaceFlinger进行合成,但是这个时候GPU可能并未完成之前的图像渲染,这时候就牵扯到一个同步,Android中,用的是Fence机制,SurfaceFlinger合成前会查询Fence,如果GPU渲染没有结束,则等待GPU渲染结束,GPU结束后,会通知SurfaceFlinger进行合成,SF合成后,提交显示,最终完成图像的渲染显示。https://zhangphil.blog.csdn.net/article/details/138614281

 Android硬件加速hardwareAccelerated支持/不支持的绘图接口-CSDN博客文章浏览阅读599次,点赞6次,收藏19次。三Buffer轮转情况下,基本不会有这种情况的发生,渲染线程一般在 dequeueBuffer 时,都可以顺利拿到可用的 Buffer (如果 dequeueBuffer 本身耗时那就也会拉长时间)。在Android早期的版本,由于硬件制造商差异大,增加了这一开关,但随着Android系统版本的迭代,以及硬件技术水平提升,现有的绝大多数Android手机硬件层面均已支持硬件加速(GPU渲染),Android本身也只有有限几个接口不支持硬件加速。https://blog.csdn.net/zhangphil/article/details/138502494

 

http://www.lryc.cn/news/361044.html

相关文章:

  • 排序-插入排序与选择排序
  • 【前端每日基础】day33——响应式布局
  • leetcode 2981.找出出现至少三次的最长子特殊字符串(纯哈希表暴力)
  • 集成算法实验与分析(软投票与硬投票)
  • 网络数据库后端框架相关面试题
  • 模拟集成电路(6)----单级放大器(共源共栅级 Cascode Stage)
  • docker以挂载目录启动容器报错问题的解决
  • MySQL—函数—流程控制函数(基础)
  • 2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷7(私有云)
  • Jenkins、GitLab部署项目
  • 21.Redis之分布式锁
  • Mysql基础学习:mysql8 JSON字段查询操作
  • 搭建基于Django的博客系统数据库迁移从Sqlite3到MySQL(四)
  • 24年护网工具,今年想参加护网的同学要会用
  • 解决TrueNas Scale部署immich后人脸识别失败,后台模型下载异常,immich更换支持中文搜索的CLIP大模型
  • 面试高频问题----2
  • Nginx的配置文件-详细使用说明
  • YOLOv5改进 | 卷积模块 | 提高网络的灵活性和表征能力的动态卷积【附代码+小白可上手】
  • 23、linux系统文件和日志分析
  • 安装VS2017后,离线安装Debugging Tools for Windows(QT5.9.2使用MSVC2017 64bit编译器)
  • 路由策略实验2
  • Linux网络-守护进程版字典翻译服务器
  • Python 推导式详解:高效简洁的数据处理技巧
  • 车联网安全入门——ICSim模拟器使用
  • leetcode - 20.有效的括号(LinkedHashMap)
  • 多维数组的动态内存分配(malloc和new)
  • 71、评测OrangePi AIpro开发板和USB CAMERAOAK视频解码+推理+编码+推流测试
  • 为什么需要开局调用函数?
  • QT-demo:0轴分布图表
  • git远程仓库限额的解决方法——大文件瘦身