Re: [問題] 快速 90/270度 旋轉
※ 引述《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
01/05 23:42, 1F
→
01/06 09:38, , 2F
01/06 09:38, 2F
推
01/06 11:45, , 3F
01/06 11:45, 3F
→
01/06 17:34, , 4F
01/06 17:34, 4F
→
01/06 23:11, , 5F
01/06 23:11, 5F
→
01/06 23:12, , 6F
01/06 23:12, 6F
推
01/07 11:33, , 7F
01/07 11:33, 7F
→
01/07 11:33, , 8F
01/07 11:33, 8F
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章