在iOS上,我能創造3個CGImage
對象,並使用CADisplayLink
在60fps做在iOS上,CALayer位圖(CGImage對象)如何顯示在圖形卡上?
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上幾乎相同?)
(這個問題旨在瞭解我們的圖形編程實際上是如何在現代圖形卡中呈現的,例如,if我們需要了解UIView和CALayer的工作原理,或者直接使用CALayer的位圖,但我們需要了解圖形體系結構。)