作者AIGecko (壁虎貓耳控)
看板Ruby
標題Re: [問題] Ruby/SDL繪圖
時間Tue Oct 16 23:30:33 2012
雖然沒有人回答
但是我終於找到問題答案了
我繪圖時是使用SDL::Surface.trnasform_blit
我再它包裝成SDL::Surface#draw
(反正要貼的Screen也就那麼一個...)
把圖拆開畫和拼起來感覺差不多
不過這就是重點...
今天在偶然中使用了Ruby-prof來測程式的表現
發現SDL::Surface
#transform_surface佔了執行的40%以上
(其他40%是Delay 20%主程式 所以...)
而不是SDL::Surface.transform_blit這個方法
也就是說這個方法裡有玄機
於是我找到了Ruby/SDL的Gem資料夾
在lib的sdl.rb中
有句很重要的transform_surface
代表了會產生新的物件
而且是每次要transform_blit時都會重新產生
於是對於大的圖檔就要花上更多時間來產生物件
(應該是要用才會alloc吧 我有弄錯嗎?)
所以改成只用一次的transfor_surface
再搭配上SDL::Surface.blit就大幅改善效能
(本來一圈24ms 現在只要6ms...)
各位要小心函式庫本身的小缺陷...
還有80:20法則...
話說用Ruby刻一個RPG遊戲會很怪嗎?
不是用RGSS而是從無到有這樣...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 36.228.150.59
1F:推 icycandle:不會怪呀,可以走跟RGSS不同的路,如果你真的有想法的話 10/17 09:57
2F:推 sand1050:話說用Ruby 只是.rb檔 似乎還要靠一些語言加載.rb檔 10/17 21:17
3F:→ sand1050:運行 10/17 21:17
4F:推 godfat:我覺得用 ruby 非常理想呀,只是現實可能有不少要克服的 :s 10/17 21:54
5F:推 ryudo:Rpg maker 10/23 20:44
6F:推 david50407:SDL 效率不會太差嗎? 10/27 00:45
7F:→ david50407:我現在有再寫一個ruby的遊戲引擎的project 最後選了OGL 10/27 00:46
8F:→ AIGecko:指的是OpenGL嗎?其實SDL繪圖效率真的很糟... 10/27 15:37
9F:→ AIGecko:程式瓶頸點竟然是Blit...前幾名也都是SDL的函式 10/27 15:38
10F:→ AIGecko:(SDL.delay消耗了一半XD 不過Blit佔了剩下40%以上...) 10/27 15:42