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

vi设计网站运动康复慧聪网seo页面优化

vi设计网站运动康复,慧聪网seo页面优化,南山网站 建设深圳信科,wordpress博客jin一,渲染层级 从渲染流程上分,Skia可分为如下三个层级: 1,指令层:SkPicture,SkDeferredCanvas-SkCanvas 这一层决定要绘图的操作,绘图操作的预变换矩阵,当前裁剪区域,在哪些层上绘图,层的生成与合并. 2,解析层:SkBitmapDevice-SkDraw-SkScan,SkDraw1Glyph::Proc 这…一,渲染层级 从渲染流程上分,Skia可分为如下三个层级: 1,指令层:SkPicture,SkDeferredCanvas-SkCanvas 这一层决定要绘图的操作,绘图操作的预变换矩阵,当前裁剪区域,在哪些层上绘图,层的生成与合并. 2,解析层:SkBitmapDevice-SkDraw-SkScan,SkDraw1Glyph::Proc 这一层决定绘画方式,完成坐标变换,解析出需要绘画的形体(点/线/规整矩形)并做好抗锯齿处理,解析好相关资源并设置Shader. 3,渲染层:SkBlitter-SkBlitRow::Proc,SkShader::shadeSpan等 (如果需要)这一层采样,产生实际绘画效果,完成适配颜色格式,(如果需要)透明度混合和抖动处理. 二,主要类介绍 1,SkCanvas 这是复杂度超出想像的一个类. (1)API设计 a,创建: 在安卓中,主要,由SkBitmap创建SkCanvas: explicit SkCanvas(const SkBitmap bitmap);该方法由bitmap创建一个SkBitmapDevice,再设置该SkBitmapDevice为SkCanvas的渲染目标. 5.0之后,提供了创建SkCanvas的快捷方法: static SkCanvas* NewRasterDirect(const SkImageInfo, void*, size_t);这样,GraphicBuffer就不需要创建与它关联的SkBitmap. 5.0之后引入的离屏渲染: static SkCanvas* NewRaster(const SkImageInfo);创建通过readPixels读取绘画内容的SkCanvas,仍是CPU绘图. b,状态: 1,矩阵状态: 矩阵决定当前绘画的几何变换: rotate,skew,scale,translate,concat 2,裁剪状态: 裁剪决定当前绘画的生效区间: clipRect,clipRRect,clipPath,clipRegion 3,保存与恢复: save,saveLayer,saveLayerAlpha,restore c,渲染: 大部分渲染的API都可由这三个组合而成: drawRect(矩形/图像绘画),drawPath(不规则图形图像绘画)和drawText(文本绘画) d,读取与写入像素: readPixels,writePixels 考虑不同绘图设备的异质性,主要由设备实现. (2)MCRec状态栈 fMCStack是存储的全部状态集,fMCRec则是当前的状态. 在save/saveLayer/saveLayerAlpha时,会新建一个在restore时,析构栈顶的MCRec. 每个状态包括如下信息: class SkCanvas::MCRec { public:int fFlags;//保存的状态标识(是否保存矩阵/裁剪/图层)矩阵指针.SkMatrix* fMatrix;//若该状态有独立矩阵,则指向内存(fMatrixStorage),否则用上一个MCRec的fMatrix.SkRasterClip* fRasterClip;//裁剪区域,若该状态有独立裁剪区域,则指向内存(fRasterClip),否则继承上一个的.SkDrawFilter* fFilter;DeviceCM* fLayer;//该状态所拥有的层(需要在此MCRec析构时回收)DeviceCM* fTopLayer;//该状态下,要求要绘画的层链表.(这些层不一定属于此状态)...... };DeviceCM:图层链表,包装一个SkBaseDevice,附加一个变化位置偏移的矩阵(在saveLayer时指定的坐标). (3)两重循环绘画 研究Skia的人,一般都会被一开始的两重循环弄晕一会,比如drawRect的代码: LOOPER_BEGIN(paint, SkDrawFilter::kRect_Type, bounds) while (iter.next()) {iter.fDevice-drawRect(iter, r, looper.paint()); } LOOPER_END()先完全展开上面的代码: AutoDrawLooper looper(this, paint, false, bounds); while (looper.next(type)) {SkDrawIter iter(this);while (iter.next()) {iter.fDevice-drawRect(iter, r, looper.paint());} }第一重循环即AutoDrawLooper,该next是后处理,在有SkImageFilter时,先渲染到临时层上,再处理该层,过滤后画到当前设备上. 第二重循环是,绘画当前状态所依附的所有层的SkDrawIter. 一般,都可忽略这两重循环. 个人认为Skia在绘画入口SkCanvas的设计并不是很好,图层,矩阵与裁剪混一起,导致难以去掉渲染任务,后面引入GPU渲染和延迟渲染都让人感到有些生硬. 2,SkDraw,SkBlitter 这里简单介绍: SkDraw是CPU绘图的实现入口,主要任务是准备渲染(形状确定,几何变换,字体解析,构建图像Shader等). SkBlitter不是单独的一个类,而是指代了一系列根据图像格式,是否包含Shader等区分出来的一系列子类. 这一族类执行真正的渲染任务,来绘画像素.
http://www.dnsts.com.cn/news/121212.html

相关文章:

  • 医院如何做网站策划为什么不推荐大家去外包公司
  • 网站建设要哪些工作链接制作
  • 西双版纳网站建设公司常州市网站建设公司
  • 网站首页原型图咋做一般做企业网站需要什么资料
  • 网页在线制作网站源码网站建设与管理插图
  • 诚信快捷小企业网站建设做股权众筹的网站
  • 淘宝网站开发的意义后台管理网站开发
  • 唐河微网站建设百度网络营销中心
  • 百度手机模板网站青海城乡建设部网站首页
  • 营销型企业网站建设规划探讨wordpress生成xml
  • 广州白云区建站外贸公司陕西省交通建设公司网站
  • 山网站建设来个网站好人有好报2024
  • 建筑网站图纸wordpress网站安全性
  • 网站建设怎么做wordpress app端
  • 杭州科技公司排名优化大师的作用
  • 网站开发的就业做地方网站
  • 企业建站平台哪个好怎样手机网站建设
  • 图书馆网站结构怎么做本地推广平台有哪些
  • 资源企业网站排名优化价格做网站里面的图片像素要求
  • 营销型网站建设的重要原则如何做电商直播
  • 网站过期怎么办四川营销
  • 华泰保险公司官方网站程序员培训班要多少钱
  • 网站备案状态查询购物网站开发视频教程
  • 网站开发开题报告引言网站网上商城建设方案
  • 老域名对做网站的义乌外贸网站建设
  • 网站建设和网站设计怎么在百度建个网站
  • 网站设计页面如何做居中自己注册一个网站要多少钱
  • 网站的维护方案百度普通收录
  • 怎么让公司网站显示官网做跨境电商开店流程
  • 泊头市建设局网站橙色企业网站源码