在iOS上,我能够创建3个
在
我还尝试向
因此,这与旧日的Apple ][甚至King's Quest III时代非常相似,这些都是DOS视频游戏,在那里只有1个位图,屏幕只会不断显示该位图。
除了这次不是1个位图,而是一棵树或位图的链接列表,图形卡不断使用画家模型将这些位图(带有位置和不透明度)绘制到主屏幕上。因此,似乎
它是如何工作的?图形卡是否接受有序的位图列表或位图树?(然后不断显示它们。为简化起见,我们不考虑CA框架中的隐式动画)在图形卡处理层下实际发生了什么?(实际上,在iOS、Mac OS X和PC上,这种方法几乎相同吗?)
(本问题旨在了解我们的图形编程实际上是如何在现代图形卡中呈现的,因为例如,如果我们需要了解UIView以及CALayer的工作原理,甚至直接使用CALayer的位图,我们确实需要了解图形体系结构。)
CGImage
对象,并使用60fps的CADisplayLink
进行操作。self.view.layer.contents = (__bridge id) imageArray[counter++ % 3];
在
ViewController
内部,每次都会将图像设置为视图的CALayer contents
,这是一个位图。仅凭这一点就可以改变屏幕显示的内容。屏幕将以60fps循环显示这3个图像。没有UIView的drawRect
,也没有CALayer的display
、drawInContext
或CALayer代理的drawLayerInContext
。它所做的就是更改CALayer的contents
。我还尝试向
self.view.layer
添加一个较小的子层,并设置该子层的contents
。那个子层将循环显示这3个图像。因此,这与旧日的Apple ][甚至King's Quest III时代非常相似,这些都是DOS视频游戏,在那里只有1个位图,屏幕只会不断显示该位图。
除了这次不是1个位图,而是一棵树或位图的链接列表,图形卡不断使用画家模型将这些位图(带有位置和不透明度)绘制到主屏幕上。因此,似乎
drawRect
、CALayer和所有其他东西都是为了实现这个最终目的而设计的。它是如何工作的?图形卡是否接受有序的位图列表或位图树?(然后不断显示它们。为简化起见,我们不考虑CA框架中的隐式动画)在图形卡处理层下实际发生了什么?(实际上,在iOS、Mac OS X和PC上,这种方法几乎相同吗?)
(本问题旨在了解我们的图形编程实际上是如何在现代图形卡中呈现的,因为例如,如果我们需要了解UIView以及CALayer的工作原理,甚至直接使用CALayer的位图,我们确实需要了解图形体系结构。)