我正在玩一款遊戲。AS3:如何有效地訪問像素數據?
遊戲需要實體分析圖像和頭部朝與
我看着Pixel Bender的特殊性能(高紅色通道等)像素,但這只是寫新的色彩的似乎是有益圖片。目前,即使在低分辨率(200x200)下,只有一個實體掃描圖像的速度會降低到1-2幀/秒。
我正在嵌入圖像並將其實例化爲位圖,作爲舞臺的子代。 1-2 FPS的情況是事先使用BitmapData.getPixel()(在每個像素上)進行距離計算。
我想知道是否有任何方法可以更有效地做到這一點......我的第一個想法是某種空間分區,再加上將圖像分成許多小塊。
我也覺得像Pixel Bender應該能夠幫助某種方式,但是我沒有什麼經驗。
乾杯任何幫助。 Jonathan
對不起,但這是明顯錯誤的。迭代次數在兩種情況下都是相同的,如果你想要做的是評估*每個*像素。循環是否嵌套不會改變這一事實。在這種情況下,將像素放入ByteArray中將無濟於事。事實上,情況更糟糕:您將使用(至少)兩倍的內存;您將避免調用getPixel(),但最終會調用readUnsignedInt()的次數相同;如果你需要知道像素座標(很可能),你最終會添加x和y的計數器或者使用模塊。無論如何,這裏沒有收穫。 – 2010-06-03 03:31:33
使用getPixels()絕對是getPixel()的首選。 Flash中任何方法調用的開銷都很大,因爲您可以像數組一樣訪問ByteArray,也就是myPixels [index],您可以節省調用每個像素方法的開銷。此外,Flash內部還對getPixel()進行了邊界檢查,這是另一次放緩。 – Quasimondo 2010-06-23 15:49:19
@Quasimondo。你在圖像處理方面比我更懂得知道(我關注你的博客!)。不過,在這種情況下,我不確定getPixels比getPixels更好(即假設您想對每個像素執行一些操作)。函數調用肯定有開銷,但是IIRC,Nicolas Canasse證明了陣列訪問也相當慢(不確定這是否在最新的玩家中發生了變化)。 – 2010-07-22 01:34:09