Re: [問題] 快速 90/270度 旋轉

看板Programming作者時間18年前 (2008/01/04 23:01), 編輯推噓3(305)
留言8則, 4人參與, 最新討論串7/8 (看更多)
※ 引述《LPH66 (IWH68S0XZ8M89)》之銘言: : ※ 引述《cjjj21 (追求平凡的幸福)》之銘言: : : 由於工作的關係需要一個快速的旋轉函式... : : 需求是將一塊 bitmap buffer 旋轉後填到另一塊 buffer 上... : : 例如 320x240 的 buffer, 旋轉後貼到 240x320 的 buffer 上... : : 一個一個pixel搬的速度實在慢到無法接受... : : 有沒有哪位大大知道一些比較快速的演算法? : : 非常感謝!! : 個人以為以cpu cache的角度來說 : 頂多只能加速到一次搬幾行/列 : 因為這幾乎等同於矩陣轉置 : 不管是讀出方或寫入方總要有一個是直的跑下來 : 而這個地方對cpu cache是最不利的 : (因為陣列是row major排列 但直的讀下來卻相當於column major順序) 讀取是循序讀取... (x方向) 寫入的位置不是連續的... 目前CPU的cache都是wirte back型, 非write through 但讀取的部分還是需要透過預讀(或是CPU自行猜測)來進行快取 依序讀取的話, CPU內建的自行猜測就可以以很高的效率執行了... 不需要自己pre-fetch... 如果你慢到無法接受... 恐怕是你程式有問題吧... 轉640 x 480... 以目前動則2G的系統... 恐怕至少也是每秒100個frame以上吧... 640 x480 (1MB), 2GHz /1MB ---> 2000 也就是以640 x 480來說, 大約有2000個指令, 那只要你處理一個pixel縮在10個clock之內, 你就可以得到200fps的performance 考慮你仍然需要繪圖及其他動作... 所以至少也有100fps吧... 處理bitmap, 你最好直接對記憶體存取, 而不要傻傻的用getpixel / putpixel慢慢存取吧 XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.195.25.91

01/05 23:42, , 1F
我覺得原po可能想做類似iPhone的內嵌系統吧
01/05 23:42, 1F

01/06 09:38, , 2F
那種不需要輸出30fps吧,CPU也是200MHz以上
01/06 09:38, 2F

01/06 11:45, , 3F
DMA只能照搬不能旋轉吧?
01/06 11:45, 3F

01/06 17:34, , 4F
to FD: 不是已經跟講"寫入部分不連續"了嗎
01/06 17:34, 4F

01/06 23:11, , 5F
iPhone連旋轉都還有"旋轉"的動畫效果
01/06 23:11, 5F

01/06 23:12, , 6F
這應該更難吧
01/06 23:12, 6F

01/07 11:33, , 7F
我只是對你說處理bitmap最好用DMA覺得
01/07 11:33, 7F

01/07 11:33, , 8F
怪怪的 我印象裡面DMA只能照搬不能處理
01/07 11:33, 8F
文章代碼(AID): #17Vaes12 (Programming)
討論串 (同標題文章)
文章代碼(AID): #17Vaes12 (Programming)