设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

BitmapEnhance 2.0

查看数: 2876 | 评论数: 5 | 收藏 3
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-5-13 13:12

正文摘要:

本帖最后由 SixRC 于 2019-5-20 12:22 编辑 BitmapEnhance2.0 发布 缺乏编辑能力 更新了就直接写最前面了 这次更新 对函数没做改动 变的是效率 现在用了VS编译(VS真香) 然后整理了一下OpenCV模块 添加了多线程等 ...

回复

mariofans 发表于 2019-5-20 14:48:04
本帖最后由 mariofans 于 2019-5-20 14:58 编辑

现在的问题还在缩放上,我只用了纯缩放,只要在关卡中用上缩放总会把58~59帧降到28以下
在标题或者家中移动时基本不掉帧,一旦进入关卡中事件比较多的时候掉帧就很严重
这时候去掉处理直接让SRC原路返回的话又能回到58帧以上
(我用了类变量实现随时变更的缩放)
  1. def ccbbss_process(src)
  2.     if @@dest_bitmap
  3.       CCBBSS_SRC_BITMAP.biten_resize(@@dest_bitmap, 2)
  4.       return @@dest_bitmap
  5.     end
  6.     return CCBBSS_SRC_BITMAP
  7.   end
复制代码

起初怀疑仍是处理的时间长,就调查了一下处理时间,从640x480到1280x960也就花了0.002
然后怀疑是Set_Bitmap的问题,但无论@@dest_bitmap存在与否Set_Bitmap都会执行,难道是大图转换的时间长?
然后我又记录了Set_Bitmap的时间,发现也是0.00x
然后我又不知道问题在哪里了

20190520142602.png (703.53 KB, 下载次数: 33)

标题

标题

20190520142615.png (141.34 KB, 下载次数: 38)

关卡

关卡

QQ图片20190520145757.png (764.5 KB, 下载次数: 31)

QQ图片20190520145757.png

QQ图片20190520145802.png (138.39 KB, 下载次数: 34)

QQ图片20190520145802.png

点评

好吧。。。要怎么发  发表于 2019-5-20 16:11
能私发我一份工程吗 这样我也看不出什么来..只要能看得出问题的工程就行  发表于 2019-5-20 15:59
无论用哪种方式缩放都会掉  发表于 2019-5-20 14:51
SixRC 发表于 2019-5-17 00:59:17
本帖最后由 SixRC 于 2019-5-17 11:29 编辑
mariofans 发表于 2019-5-16 23:51
是基于这个改编的(测试这个也会挂)
汇编层面的东西我就不了解了。。。 ...


最新情况
用下面这个 RGSS103J.dll 就行了
改了rm创建堆栈时的参数 现在默认有内存执行权限了 兼容性好
RGSS103J.zip (497.09 KB, 下载次数: 108)
//
已经搞定了 在点评 下面是昨天的
//
收到 现在睡觉了 明天早课 我下课看
我看了下
你在原生exe基础上改的话应该不会出错吧?
假如那样 我现有的猜测是
ruby申请的内存是读写的也就是不可执行的
原game.exe可能注册了异常处理函数
在执行没有执行权限的内存时会改内存权限
可以试试把CCBBSS_CODE的内存权限改下
( virtualprotect 啥的)
或者用你编译的exe 在脚本里试试
code=[0xC2, 0x10, 0] # ret 10h
然后 CallWindowProc 看看会不会挂?
(字符串地址=[code].pack("p").unpack("l")[0]
或者api里用p直接传)

我觉得没啥地方能出错了
假如觉得麻烦的话就等我下

我想了想又觉得不是这个问题
因为平时也没遇到过这种事情
完全是我脑补出来的
算了 明天看到再说

或者和程序的默认堆栈属性有关
感觉我要起不来了

点评

关于效率问题 我发现 OpenCV 没有调用GPU 呃 应该是我没有编译相关的东西进去 我下次试着编译个利用GPU加速的看看 还想作些改进的 不过懒..  发表于 2019-5-17 14:56
p 是 p 在ccbbss_process里面吗 因为hook了画面刷新的过程 而 p 会刷新画面 所以会死循环挂掉 这函数里也不能 Graphics.update 的 只能用 MessageBox(CC_T) 替代  发表于 2019-5-17 14:53
现在OK了非常感谢,实时缩放的话Cubic太掉帧了就换成Linear了_(:D」∠)_  发表于 2019-5-17 14:32
找到原因了,之前测试的时候在那一句之后紧接着一个p方法的锅。。去掉就没事了不过为什么会这样呢  发表于 2019-5-17 14:14
原始exe也错了2333  发表于 2019-5-17 14:09
mariofans 发表于 2019-5-16 23:51:42
本帖最后由 mariofans 于 2019-5-17 14:08 编辑
SixRC 发表于 2019-5-16 16:12
你用动态调试器打开运行下看看挂在哪了?
因为出异常的话会优先给调试端看 不会马上挂的
然后就能清楚为什 ...


是基于这个改编的(测试这个也会挂)
汇编层面的东西我就不了解了。。。

ScrSh.png (43.97 KB, 下载次数: 35)

ScrSh.png

ScrSh2.png (35.22 KB, 下载次数: 30)

第二次的报错位置

第二次的报错位置

Custom RGSS Player.rar

67.58 KB, 下载次数: 103

点评

假如是VS的话我查了 应该是项目->属性->链接器->高级->数据执行保护(DEP) 关掉就好了 别的编译器应该没这玩意  发表于 2019-5-17 10:54
所以解决一是看看你的编译器有没有和内存执行/保护相关的选项 二是在每个被执行的code前都要改它们的内存权限 就比较麻烦了  发表于 2019-5-17 10:50
已经确定问题了 和 DEP 相关 现在的编译器可能默认开启 DEP 保护内存安全 这个在程序生命周期内是无法修改的  发表于 2019-5-17 10:49
不过也不能说是内存属性问题 因为权限都一样 但是一个不能执行一个能 得查查具体是什么决定的  发表于 2019-5-17 10:19
确定了 是内存属性的问题 应该和编译器有关 我在想解决方法了  发表于 2019-5-17 10:15
SixRC 发表于 2019-5-16 16:12:37
mariofans 发表于 2019-5-16 12:44
不知为何,用自编译的Game.exe会停止运行

你用动态调试器打开运行下看看挂在哪了?
因为出异常的话会优先给调试端看 不会马上挂的
然后就能清楚为什么会挂了
可能是空指针 写入超出范围啥的
肯定有原因的
分析下基本能看出来
我感觉应该不是我这边的问题
我改了dll 只换exe理论上没问题
我不知道你改了啥 不好猜测
要不你发一份exe给我我晚上分析一下?
我现在有事在外面
mariofans 发表于 2019-5-16 12:44:07
不知为何,用自编译的Game.exe会停止运行

点评

对 想起来函数名也改了..总之复制一下那个脚本页就好了  发表于 2019-5-20 14:08
你是直接复制了dll过去吗 我其实改了脚本 要先人工加载一下tbb.dll的  发表于 2019-5-20 14:04
额..  发表于 2019-5-20 14:03
...一个多线程库 那关了吧 反正没啥用 我是想不到为啥还出错 我回去了看看  发表于 2019-5-20 14:02
呸,是我Graphics里边的dll方法名没改。。。。。  发表于 2019-5-20 13:59
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-22 14:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表