Re: [問題] Ruby/SDL繪圖

作者: AIGecko (師大貓耳控)   2012-10-16 23:30:33
雖然沒有人回答
但是我終於找到問題答案了
我繪圖時是使用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而是從無到有這樣...
作者: icycandle (兩棲作戰太空鼠)   0000-00-00 00:00:00
不會怪呀,可以走跟RGSS不同的路,如果你真的有想法的話
作者: sand1050 (不知名的人物)   0000-00-00 00:00:00
話說用Ruby 只是.rb檔 似乎還要靠一些語言加載.rb檔運行
作者: godfat (godfat 真常)   0000-00-00 00:00:00
我覺得用 ruby 非常理想呀,只是現實可能有不少要克服的 :s
作者: ryudo (那很好哇)   0000-00-00 00:00:00
Rpg maker
作者: david50407 (Davy)   0000-00-00 00:00:00
SDL 效率不會太差嗎?我現在有再寫一個ruby的遊戲引擎的project 最後選了OGL
作者: AIGecko (師大貓耳控)   0000-00-00 00:00:00
指的是OpenGL嗎?其實SDL繪圖效率真的很糟...程式瓶頸點竟然是Blit...前幾名也都是SDL的函式(SDL.delay消耗了一半XD 不過Blit佔了剩下40%以上...)

Links booklink

Contact Us: admin [ a t ] ucptt.com