赞 | 12 |
VIP | 107 |
好人卡 | 6 |
积分 | 4 |
经验 | 31122 |
最后登录 | 2024-6-29 |
在线时间 | 1606 小时 |
Lv2.观梦者 傻♂逼
- 梦石
- 0
- 星屑
- 374
- 在线时间
- 1606 小时
- 注册时间
- 2007-3-13
- 帖子
- 6562
|
我来解释一下为什么DX(OGL)+RM无法对画面进行具有实用意义的实时的修改。
首先先说一下我现在能做到的。
可以将RM的Bitmap,或者每一帧更新时的整个画面,打了个包丢给DX,OpenACC这类的GPU计算(群集计算)的库。
然后GPU高效计算之后。代替RM原有的绘制操作,进行绘制。
但是路人皆知显存和内存交换数据简直就是茶几上的悲剧。
什么,你不信……你知道自从我用了batch之后画面绘制的效率提高了100倍么?
-----------
可以看出,楼主想要实现的是对RM中的图元(Bitmap)进行修改。
大家都知道,RM使用DD进行画面绘制,原生不支持Shader。
然后,RM非常悲剧,Bitmap什么的都在内存里面。
如果要Hook的话,可以用过一些简单的方法,把这部分(DX)数据撸到Shader,然后两面交换一下丢回来。这是没有问题的。
包括Tilemap。
但是这样操作会有比较蛋疼的效率问题。
目测精灵超过200个就得跪。
怎么办?
当然有办法。
只要智商没有问题的人都看出来了这里该死的内存和显存……你们……
于是,只要愉快的接管RM的Graphics啦,Tilemap啦,Bitmap啦,Viewport啦,Sprite啦,吧啦吧啦,把数据统统塞在显存就可以轻松高效加愉快的解决问题了。
接下来是抢答时间……请问如果你用了fmod,RM的引擎还剩下什么,你确定是Ruby而不是Ruby而是Ruby!
> 然后你可以去找@晴兰 考虑一下在RM的窗口里面塞个DX然后就没有然后了。不对……你还是可以画RM本来有的东西…… |
|