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

Project1

 找回密码
 注册会员
搜索
楼主: zh99998
打印 上一主题 下一主题

[RMVX发布] RM视频播放器 [2011-4-20更新异步模式 可以融合进 RM 画面]

  [复制链接]

Lv1.梦旅人

百合乡の蕾咪

梦石
0
星屑
55
在线时间
151 小时
注册时间
2011-1-12
帖子
198
31
发表于 2011-4-17 23:12:30 | 只看该作者
回复 yangff 的帖子

现在的问题不是在于拦截 RM 自身的更新方法.

问题在于就算是拦截掉了, RM 不再刷新画面了, 但是脚本的图像描绘部分也会跟着直接瘫痪. 不能描绘图像什么的额, 就算是拦截掉了, 和现在这样不调用 update 有啥区别么?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
33 小时
注册时间
2009-12-22
帖子
82
32
发表于 2011-4-18 00:39:25 | 只看该作者
zh喵好厉害~~

点评

不是我写的啊喵,请看主楼第一行  发表于 2011-4-18 10:10
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
609
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

33
 楼主| 发表于 2011-4-18 10:12:57 | 只看该作者
蕾米莉亚·斯卡雷特 发表于 2011-4-17 22:32
组件包: f432de2bd0
MP4解码库: f4fb0c59a8

thx, 主楼已更新
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

Lv1.梦旅人

百合乡の蕾咪

梦石
0
星屑
55
在线时间
151 小时
注册时间
2011-1-12
帖子
198
34
发表于 2011-4-18 12:20:57 | 只看该作者
本帖最后由 蕾米莉亚·斯卡雷特 于 2011-4-18 13:53 编辑

更新 rmvb 解码库:

VideoData(RMVB).rar (1.72 MB, 下载次数: 4155)

115:
f43cf4c528
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

35
发表于 2011-4-18 18:23:22 | 只看该作者
蕾米莉亚·斯卡雷特 发表于 2011-4-17 23:12
回复 yangff 的帖子

现在的问题不是在于拦截 RM 自身的更新方法.

汗……我的意思是这样的

  DxStartDraw
  DxDraw
  在这里插入视屏的描绘
  DxEndDraw

  
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

百合乡の蕾咪

梦石
0
星屑
55
在线时间
151 小时
注册时间
2011-1-12
帖子
198
36
发表于 2011-4-18 18:28:06 | 只看该作者
回复 yangff 的帖子

默认视频不需要刷新.

一刷新就算不调用 update 也会闪屏~
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

37
发表于 2011-4-18 19:52:13 | 只看该作者
蕾米莉亚·斯卡雷特 发表于 2011-4-18 18:28
回复 yangff 的帖子

默认视频不需要刷新.

什么叫不要刷新?你用的是多线程?那就更简单了,把描绘的目标附加到子窗体上,然后给GAME.EXE加一个WS_CLIPCHILDREN,但是这样有可能会掉FPS(WS_CLIPCHILDREN的作用是屏蔽被子窗体遮住部分的描绘工作,对RM有效)

点评

裁剪么? 这个倒是没想到过. 去试试~~~~  发表于 2011-4-18 20:19
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

百合乡の蕾咪

梦石
0
星屑
55
在线时间
151 小时
注册时间
2011-1-12
帖子
198
38
发表于 2011-4-18 20:51:47 | 只看该作者
回复 yangff 的帖子

那个, 测试了一下. 原理上就不可以的话.

开始播放视频之前就把视频播放窗口附加进 RM 的窗口里. 所以, 修改WS_CLIPCHILDREN 无效. 因为是同一个窗口.
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

39
发表于 2011-4-18 21:32:38 | 只看该作者
本帖最后由 yangff 于 2011-4-18 21:36 编辑
蕾米莉亚·斯卡雷特 发表于 2011-4-18 20:51
回复 yangff 的帖子

那个, 测试了一下. 原理上就不可以的话.


我是这么做的……
父窗体是这样创建的

        DWORD dwStyle = (WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_VISIBLE | WS_CLIPCHILDREN);

        hWnd = ::CreateWindowEx(WS_EX_WINDOWEDGE, pWndClassName, szTitle, dwStyle,
                rt.left, rt.top, rt.right - rt.left, rt.bottom - rt.top, 0, 0, hInstance, 0);
子窗体
module APIs
  def self.make_window(x,y,width,height) #return hwnd
    #p $hInstance
    CWE.call(WS::EX_WINDOWEDGE,'RGSS Player','CWebB',WS::CHILD|WS::VISIBLE,x,y,width,height,get_hWnd,0,$hInstance,0)
    #CreateWindowEx.call(1, "Edit", "", W, 0, 0, w, h, GetActiveWindow.call, 1, GetModuleHandle.call(nil), 1)
  end
end
这样的话子窗体所在区域是不会描绘的
然后调用相关dll的时候直接把make_window返回的句柄传进去……
主要的作用还是嵌入视屏……不过因该比较卡……如果背景在动画的话……至少Flash如此……
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

百合乡の蕾咪

梦石
0
星屑
55
在线时间
151 小时
注册时间
2011-1-12
帖子
198
40
发表于 2011-4-18 21:37:06 | 只看该作者
那啥, 我的做法是直接在 RM 的窗口上描绘刷新的话, 没有创建子窗口.

不过使用子窗口来覆盖掉原 RM 窗口的话, 也是不错的.

不过要拦截掉 RM 窗口的移动消息, WM_MOVE. 有点麻烦就是~~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-21 23:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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