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