V2EX jox0
 jox0 最近的时间轴更新
jox0

jox0

V2EX 第 214443 号会员,加入于 2017-02-10 14:04:28 +08:00
jox0 最近回复了
2017-06-19 17:12:20 +08:00
回复了 jox0 创建的主题 iDev 请问 UIView 是怎么渲染自己的?
已经过去半年了,这段时间我学习了一下 opengl 绘图,想起来还有这么个帖子

当时苹果的工程师也没有给太多具体的技术细节,只是提到了最终 Core Animation 会 issue OpenGL drawing command 来生成最终的 bitmap。

随着新一代的绘图 API 的出现,现在 Core Animation 的底层很可能不再使用 OpenGL,而转而使用苹果新推出的 Metal。不过这都不重要,重要的是我当初提出的这个问题。

对于一个 UIView,如果不提供 bitmap (设置 layer 的 contents 属性),也不实现 drawRect 或者 CALayer drawing 的那几个 draw 函数,那么一个 UIView 的内容会根据这个 UIView 的状态( backgroundColor,bounds,其实都是 layer 的状态),提交到 render server,并由 render server 调用底层的图形 API 来绘制这个 UIView 的内容,并将最终绘制的 bitmap 结果通过类似 glReadPixels 的 API 从显寸上复制到 CPU 内存里,这部分内存由 CALayer 的内部私有变量来负责持有,这部分数据目前是无法直接获取到的,只能通过 CALayer 的 renderInContext:等 API 间接的取到,这里与 CALayer 的 contents 属性不同,contents 只是用来为一个 CALayer 提供内容的。

所以一个 UIView 有三种方式来生成内容,分别是 drawRect:,设置 layer 的 contents 属性,设置 UIView 本身或者 layer 的属性,这三种方式最终内存占用是一模一样的,但是消耗的 CPU 和 GPU 资源却不同,第一种需要调用 CPU 绘图 API 来绘制图形,CPU bound ;第二种虽然不需要调用 CPU 来绘图,但是可能会使用 CPU 来解压缩图片文件,所以也是 CPU bound ;第三种 CPU 只负责必要的状态修改,由 GPU 来完成主要的绘图工作,因为 GPU 绘图效率比 CPU 高,所以这种方式应该是效率最高的,整体的性能消耗也最低,GPU bound
2017-03-08 15:33:54 +08:00
回复了 xi_lin 创建的主题 iDev 今天好多人都收到苹果警告信了
@game3108 是的,是可以热更新

@loveuqian 我没有用过这些技术,不过一定程度上也可以理解,据说可以提高开发效率,我没试过,虽然我本人是持谨慎态度的
2017-03-08 14:37:00 +08:00
回复了 xi_lin 创建的主题 iDev 今天好多人都收到苹果警告信了
@game3108 JS 和 Lua 脚本文件随应用打包一起发布就没事,苹果这次主要打击的是 JSPatch ,我在的公司的应用使用的某第三方的 SDK 里使用了 JSPatch ,导致我们也收到了警告,其他的应用没有问题
2017-03-08 13:54:26 +08:00
回复了 xi_lin 创建的主题 iDev 今天好多人都收到苹果警告信了
这次是苹果出手整顿热更新技术的使用,使用 RN 、 weex 、 Hybrid 、 Lua 等技术构建应用的只要不热更新就不会受到影响。
2017-02-16 12:55:41 +08:00
回复了 jox0 创建的主题 iDev 请问 UIView 是怎么渲染自己的?
@ningcool 3Q~ 我用了我的一张 RTI ,这两天正在通过邮件询问 Apple 的一个工程师这方面的问题,过两天如果有答案我再来这里更新
2017-02-13 11:13:59 +08:00
回复了 jox0 创建的主题 iDev 请问 UIView 是怎么渲染自己的?
@ningcool 非常感谢,您说的这些我都了解,我就是想知道 “这些绘制离不开 OpenGL 和 GPU ” 这部分的技术细节,请问您是否了解?
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3995 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 24ms UTC 05:26 PVG 13:26 LAX 21:26 JFK 00:26
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86