作者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