技术宅的结界

 找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 1082|回复: 15
收起左侧

【DirectX】【VB】牛年马月神作—高仿微软dx8vb.dll重制版开源

[复制链接]

5

主题

104

帖子

2242

积分

用户组: 上·技术宅

UID
4293
精华
5
威望
43 点
宅币
1608 个
贡献
419 次
宅之契约
0 份
在线时间
146 小时
注册时间
2018-9-19
发表于 2021-7-3 17:24:47 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有帐号?立即注册→加入我们

x
本帖最后由 系统消息 于 2021-7-5 14:12 编辑

原帖来源:【DirectX】【VB】牛年马月神作——高仿微软dx8vb.dll重制版(优化、BUG修复、开源)https://www.0xaa55.com/thread-26515-1-1.html(出处: 技术宅的结界,转载请保留出处。)
百度分贴:【DirectX】牛年马月神作——高仿微软dx8vb.dll重制版开源了 https://tieba.baidu.com/p/7433369521
技术交流QQ群(有技术问题或发现新的BUG均可来反馈):
        112915633        CoolWind游戏编程研究
        79221561        VB游戏(GDI OpenGL DirectX)
        264417277        0xAA55技术宅的结界

用VB写过DirectX程序的开发者基本上都知道微软开发过VB专用版的DX类库 dx7vb.dll 和 dx8vb.dll,这俩dll至今已有二十来年的历史了,这些年间有不少VB开发者用其开发出了优秀作品,但是绝大多数开发者都只使用了DX的图形图像功能,经过我本人的研究发现dx8vb.dll里面相对用的较少的功能有重大BUG,可是这么多年过去了发现的人少之又少,而微软官方又从来没有修复这些BUG,于是我决定自行修复。我们再来看看,从Vista后系统也不再内置这两个dll了,要用的话需要发布时打包,既然要打包那干嘛不打包个已修复过BUG的版本呢?
说到dx8vb.dll有BUG,那么它有哪些BUG呢?对我们开发者有什么影响?我为什么要修复这些BUG呢?请看以下列表:
模块/方法描述等级
DirectSound3DBuffer内部对象泄漏:释放外部后对象后,此对象析构函数里面未完整释放内部对象,会导致对象释放后声音还在继续播放(回到IDE状态也是如此),即便先手动停止了播放后再释放也会导致内存泄漏(注意并不仅仅是对象本身泄漏,连音频Buffer也一起泄漏了)。严重:会有声音残留和大量内存无法释放。
DirectPlayAddress、DirectPlayClient、DirectPlayLobbiedApplication、DirectPlayLobbyClient、DirectPlayPeer、DirectPlayServer、DirectPlayVoiceClient、DirectPlayVoiceServer和 DirectSound3DBuffer 的类似,只不过此对象没有声音,对开发者的体验影响相对较小,但是也存在内存泄漏和网络连接不能自动断开等问题。普通:平常感觉不到,但可能长时间运行会有内存持续增长等问题。
InternalGetObject、InternalSetObject这是获取内部对象的接口dx8vb.dll是对VC的DX接口二次封装方便VB使用,因此该函数可用和原生DXAPI交互使用,但是微软忘记了对其内部对象的计数引用处理,使用此函数存在导致IDE崩溃的风险。严重:IDE崩溃将会导致未保存的代码丢失。
D3DX8.DrawText这个函数其实并不算BUG,而是它内部调用的是ANSI接口,因此会有一些特殊字符变成问号的问题,所以我将其修改成了Unicode接口,顺便再额外优化了一下它在透明背景的RTT中绘制的效果。轻微:不修复不影响正常使用,但修复了会有更好的体验。


根据Ayala大佬的提议,现发布一下BUG修复前后的对比图(左边为修复前,右边为修复后):

3D音效修复前

3D音效修复前
4.png

DrawText修复前

DrawText修复前

DrawText修复后

DrawText修复后

可以看到:3D音效BUG修复前在回到IDE后,仍然有声音在播放,而修复后就释放掉了。而DrawText在修复前Unicode特殊字符就变成?,还有就是会因为\0字符截断,修复后就可以正确显示特殊字符和\0字符,甚至由两个UTF16组成的Emoji字符(前提是你要有对应的字体)。

本次发布的dx8vb.dll重置版,基于DirectX8.1开发,需要注意的是微软官方的dx8vb.dll有8.0和8.1两个版本,并且这两个版本有一部分接口互不兼容。本人目前是重置的8.1版本,并与微软官方的8.1版本完全相互兼容,原8.0的开发者如需使用,可能需要修改部分代码后重新编译后才能使用。因为不同版本的dx8vb.dll之间存在的不兼容问题,我提供了绿化清单文件(使用方法和XP控件主题的manifest一样),这样可以让exe不走注册表调用此dll(IDE下使用仍需注册),避免与别人电脑上已安装的版本冲突问题。

免责声明:本重置版及其源码都仅用于个人性质的学习参考和技术研究,从未有意标榜或冒充是微软官方产品。如有商用行为或造成版权纠纷等侵犯微软公司合法版权的行为,一切后果将由肇事者自行负责。

提示:源码需回帖可见(源码的解压缩密码在二进制文件压缩包的help.txt里)
游客,如果您要查看本帖隐藏内容请回复

dx8vb-bin.7z

372.58 KB, 阅读权限: 1, 下载次数: 15

二进制文件(解压缩密码:dx8vb-mymm)

评分

参与人数 3威望 +30 宅币 +110 贡献 +50 收起 理由
PASSOK + 10 + 50 + 10 赞!
啊喵~ + 10 + 30 + 20 赞!
0xAA55 + 10 + 30 + 20 屌!

查看全部评分

回复

使用道具 举报

30

主题

203

帖子

2417

积分

用户组: 版主

UID
1821
精华
7
威望
69 点
宅币
1835 个
贡献
206 次
宅之契约
0 份
在线时间
386 小时
注册时间
2016-7-12
发表于 2021-7-3 23:38:24 | 显示全部楼层
发布一下bug版本的演示图和修复版本的演示图,效果会更好哟

0

主题

3

帖子

17

积分

用户组: 初·技术宅

UID
5263
精华
0
威望
0 点
宅币
14 个
贡献
0 次
宅之契约
0 份
在线时间
1 小时
注册时间
2019-8-30
发表于 2021-7-3 17:40:48 | 显示全部楼层
前排支持YY菌魔改DX!
原来DX8的DrawText竟然是默认A版?!
那这个DLL是不是有机会修复一些国外DX8游戏的乱码问题?

5

主题

104

帖子

2242

积分

用户组: 上·技术宅

UID
4293
精华
5
威望
43 点
宅币
1608 个
贡献
419 次
宅之契约
0 份
在线时间
146 小时
注册时间
2018-9-19
 楼主| 发表于 2021-7-3 18:02:17 | 显示全部楼层
秋枫萧萧 发表于 2021-7-3 17:40
前排支持YY菌魔改DX!
原来DX8的DrawText竟然是默认A版?!
那这个DLL是不是有机会修复一些国外DX8游戏的乱 ...

也许能吧,主要还是看是什么原因导致的,如果只是游戏本身的原因,跟dx8vb.dll无关的话,理论上就不会修复。

0

主题

12

帖子

4748

积分

用户组: 技术宅的结界VIP成员

UID
2021
精华
0
威望
2 点
宅币
4732 个
贡献
0 次
宅之契约
0 份
在线时间
8 小时
注册时间
2016-10-21
发表于 2021-7-3 18:06:38 | 显示全部楼层
VBer们的福音,我肯定不会研究它的源码的,望楼主继续维护之。
阿里阿多

0

主题

1

帖子

22

积分

用户组: 初·技术宅

UID
7270
精华
0
威望
1 点
宅币
19 个
贡献
0 次
宅之契约
0 份
在线时间
1 小时
注册时间
2021-7-3
发表于 2021-7-3 18:12:09 | 显示全部楼层
厉害啊。。。膜拜大神。。。

0

主题

18

帖子

4

积分

用户组: 初·技术宅

UID
3807
精华
0
威望
0 点
宅币
-14 个
贡献
0 次
宅之契约
0 份
在线时间
5 小时
注册时间
2018-5-5
发表于 2021-7-4 08:52:45 | 显示全部楼层
厉害了.
回复

使用道具 举报

0

主题

1

帖子

14

积分

用户组: 初·技术宅

UID
7271
精华
0
威望
1 点
宅币
11 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2021-7-4
发表于 2021-7-4 09:11:13 | 显示全部楼层
支持YY菌魔改DX!
原来DX8的DrawText竟然是默认A版

5

主题

104

帖子

2242

积分

用户组: 上·技术宅

UID
4293
精华
5
威望
43 点
宅币
1608 个
贡献
419 次
宅之契约
0 份
在线时间
146 小时
注册时间
2018-9-19
 楼主| 发表于 2021-7-5 14:15:46 | 显示全部楼层
Ayala 发表于 2021-7-3 23:38
发布一下bug版本的演示图和修复版本的演示图,效果会更好哟

已经按照你说的来发布了两个可以明显的看出区别的BUG对比图来看了

39

主题

215

帖子

7821

积分

用户组: 管理员

UID
77
精华
14
威望
144 点
宅币
7090 个
贡献
158 次
宅之契约
0 份
在线时间
156 小时
注册时间
2014-2-22
发表于 2021-7-6 04:57:13 | 显示全部楼层
LZ能否用DX来制作一个山寨CS甚至山寨GTA(凭个人之力)?

5

主题

104

帖子

2242

积分

用户组: 上·技术宅

UID
4293
精华
5
威望
43 点
宅币
1608 个
贡献
419 次
宅之契约
0 份
在线时间
146 小时
注册时间
2018-9-19
 楼主| 发表于 2021-7-6 10:00:17 | 显示全部楼层
美俪女神 发表于 2021-7-6 04:57
LZ能否用DX来制作一个山寨CS甚至山寨GTA(凭个人之力)?

不能,我DX主要是在搞的2D方面,3D方面不熟,最多只了解一点点基本原理。

0

主题

37

帖子

115

积分

用户组: 小·技术宅

UID
1457
精华
0
威望
2 点
宅币
74 个
贡献
0 次
宅之契约
0 份
在线时间
7 小时
注册时间
2016-1-29
发表于 2021-7-6 11:02:00 | 显示全部楼层
回复就回复,反正也是回复

39

主题

215

帖子

7821

积分

用户组: 管理员

UID
77
精华
14
威望
144 点
宅币
7090 个
贡献
158 次
宅之契约
0 份
在线时间
156 小时
注册时间
2014-2-22
发表于 2021-7-7 00:22:22 | 显示全部楼层
系统消息 发表于 2021-7-6 10:00
不能,我DX主要是在搞的2D方面,3D方面不熟,最多只了解一点点基本原理。 ...

A5群里除了A5,还有没有谁懂得搞3D的?我在2014年就跟A5提过山寨CS/山寨GTA,现在我儿子都会打酱油了,山寨CS/山寨GTA还是没影。

5

主题

104

帖子

2242

积分

用户组: 上·技术宅

UID
4293
精华
5
威望
43 点
宅币
1608 个
贡献
419 次
宅之契约
0 份
在线时间
146 小时
注册时间
2018-9-19
 楼主| 发表于 2021-7-7 10:13:56 | 显示全部楼层
美俪女神 发表于 2021-7-7 00:22
A5群里除了A5,还有没有谁懂得搞3D的?我在2014年就跟A5提过山寨CS/山寨GTA,现在我儿子都会打酱油了,山 ...

A5群里懂3D的大佬大有人在吧,只是除了A5其他人基本上都很少在群里发言。

9

主题

19

帖子

437

积分

用户组: 中·技术宅

UID
5181
精华
3
威望
39 点
宅币
246 个
贡献
79 次
宅之契约
0 份
在线时间
41 小时
注册时间
2019-7-25
发表于 2021-8-19 09:53:04 | 显示全部楼层
膜拜大佬
回复

使用道具 举报

2

主题

32

帖子

537

积分

用户组: 大·技术宅

UID
4699
精华
0
威望
4 点
宅币
358 个
贡献
139 次
宅之契约
0 份
在线时间
24 小时
注册时间
2019-2-18
发表于 7 天前 | 显示全部楼层
膜拜大佬
回复

使用道具 举报

本版积分规则

QQ|申请友链||Archiver|手机版|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2021-9-18 15:13 , Processed in 0.052353 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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