Project1

标题: 今天闲的测了一下RGSS1和3的Bitmap效率 [打印本页]

作者: SailCat    时间: 2016-2-24 13:18
标题: 今天闲的测了一下RGSS1和3的Bitmap效率
测试的代码大概长这样
#建一个bitmap
t=Time.now
loop do
  #测什么东西
  t1 = Time.now
  break when t1-1 >1.0 / 40 #这里本来是Graphics.frame_rate考虑到XP和VA不一样就统一成了40
end

然后打印循环的次数

结果亮了……说好的“高效图形引擎”RGSS3呢?

draw_text(1字符):RGSS1:每帧大概能执行700次;RGSS3:每帧大概能执行225次(描边关闭、阴影关闭的情况下)
draw_text(20字符):RGSS1:每帧大概能执行30次;RGSS3:每帧大概能执行17次(描边关闭、阴影关闭的情况下)
如果在RGSS1里手工实现描边,并将RGSS3的相关选项开启(默认开启)
draw_text(1字符):RGSS1:每帧大概能执行70次;RGSS3:每帧大概能执行125次
draw_text(10字符):RGSS1:每帧大概能执行24次;RGSS3:每帧大概能执行24次
draw_text(20字符):RGSS1:每帧大概能执行17次;RGSS3:每帧大概能执行17次
draw_text(30字符):RGSS1:每帧大概能执行11次;RGSS3:每帧大概能执行10次

blt:RGSS1:每帧大概能执行62-68次;RGSS3:每帧大概能执行57-71次
stretch_blt:两个差不多,和dest_rect的大小正相关,如果src_rect比原来的小(需要放大)有额外的花费

set_pixel: RGSS1:每帧大概能执行11000-12000次;RGSS3:每帧大概能执行7000-8000次(宝宝你吓到我了!)
get_pixel: 上面的2倍……

fill_rect: RGSS1和3:每帧大概能执行780-810次
gradient_fill_rect: RGSS1无此功能,RGSS3:每帧大概能执行13次(横向)或426次(纵向)……这差别太大了吧
clear_rect: RGSS1无此功能,RGSS3:每帧大概能执行880-900次
blur: RGSS1无此功能,RGSS3:每帧大概能执行1次


作者: 精灵使者    时间: 2016-2-24 15:47
  1. #=============================================================================
  2. # ■ Bitmap重定义
  3. #=============================================================================

  4. class Bitmap
  5.   def blur(strength = 1, opacity = 10)
  6.    (-strength).upto(strength) do |x|
  7.      (-strength).upto(strength) do |y|
  8.       next if x.zero? and y.zero?
  9.       src_rect = Rect.new(0, 0, width - x, height - y)
  10.       blt(x, y, self, src_rect, opacity)
  11.      end
  12.    end
  13.   end
  14. end
复制代码
精灵放一段忧雪的黑科技
作者: 紫英晓狼1130    时间: 2016-2-24 16:06
猫大真是好厉害的
作者: taroxd    时间: 2016-2-24 16:19
官方哪里说过 RGSS3 的图形处理能力比 RGSS1 高效了?

至少连 Bitmap 的存储方式都没变过来着
作者: 晴兰    时间: 2016-2-25 13:23
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1