爲了澄清,我知道使用多個不同圖像時紋理圖譜可以提高性能。但是我非常感興趣的是,當你不這樣做時,事情是如何完成的。UIImageView如何動畫如此流暢? (或者:如何讓OpenGL高效地逐幀渲染動畫)
我嘗試在自定義OpenGL中手動執行一些逐幀動畫,其中每個框架綁定一個新紋理並在同一個點精靈上繪製它。它可以工作,但與抽象相同的能力相比非常緩慢。我在前面加載所有紋理,但重新綁定是在每一幀完成的。相比之下,UIImageView
接受單個圖像,而不是紋理圖集,所以我可以想象它的效果是相似的。
這些是76個圖像單獨加載,而不是作爲紋理圖集,每個都是大約200px的正方形。在OpenGL中,我懷疑這個瓶頸是在每一幀重新綁定紋理的要求。但UIImageView
如何做到這一點,因爲我期望有類似的瓶頸?是否UIImageView
以某種方式在幕後創建了一個圖集,因此不需要重新貼圖紋理?由於UIKit最終在它下面運行了OpenGL,我很好奇它是如何工作的。
如果有動畫多重紋理,而不是換出不同的質感結合OpenGL中的每一幀,我想知道,因爲它可能在什麼蘋果在他們的框架做暗示了更有效的手段。
如果我確實在一秒鐘內爲60幀中的每一幀獲得了一個新幀,那麼在我的76幀中動畫將花費大約1.25秒。事實上,我通過UIImageView獲得了這個結果,但OpenGL需要大約3到4秒。
謝謝,我會做更多的挖掘,以瞭解我在分析中發現的內容等等。順便說一下,60 fps並非完全不可能,我經常用簡單的2D遊戲來獲得它。 – johnbakers 2013-04-24 18:15:52