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

中文网站模板seo的基本内容

中文网站模板,seo的基本内容,沈阳seo搜索引擎,网站板块怎么做一,渲染层级 从渲染流程上分,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,再设置该SkBitmapDeviceSkCanvas的渲染目标.

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

这里简单介绍:
SkDrawCPU绘图的实现入口,主要任务是准备渲染(形状确定,几何变换,字体解析,构建图像Shader等).
SkBlitter不是单独的一个类,而是指代了一系列根据图像格式,是否包含Shader区分出来的一系列子类.
这一族类执行真正的渲染任务,来绘画像素.

http://www.tj-hxxt.cn/news/84560.html

相关文章:

  • 电脑网站被劫持怎么恢复建站系统哪个比较好
  • 优秀网站设计案例中国搜狗收录提交入口
  • 怎么做原创电影视频网站个人网站开发网
  • 合肥建设集团信息网站发表文章的平台有哪些
  • 做网站怎么入账百度推广退款电话
  • 一个人做两个博客网站江苏搜索引擎优化公司
  • 找人做网站深圳seo关键词优化外包公司
  • 宜城网站建设深圳网络营销推广服务
  • seo公司排行seo排名赚挂机
  • 徐汇科技网站建设蜜雪冰城网络营销案例分析
  • 网站建设合同 下载福州网站建设
  • 网络服务商怎么查询东莞seo网站排名优化
  • 28网站制作seo网络营销推广
  • 永嘉网站制作系统seo优化范畴
  • 东西湖区网站建设公司今日国内新闻头条
  • 网络销售怎么做网站旺道seo营销软件
  • 成都公司网站开发交换友情链接的意义是什么
  • 衢州体育中心设计理念小红书关键词排名优化
  • mvc做的游戏网站关键词排名推广
  • 深圳品牌网站制作报价爱站网关键词密度
  • 聊城做网站厉害的公司杭州关键词优化平台
  • 佛山论坛建站模板福州seo推广外包
  • 北京网站建设及优化站长之家ppt模板
  • 郑州 网站建设有限公司沈阳seo排名收费
  • 网站建设与网页设计专业的seo快速排名外包
  • 影楼行业网站网站的优化从哪里进行
  • 个体工商户注册流程班级优化大师官网登录
  • 怎么用源码做网站cps广告联盟网站
  • 网易官网入口网站怎么seo关键词排名优化推广
  • 辽宁购物网站制作舆情分析报告模板