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

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 11716|回复: 35

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

[复制链接]
发表于 2021-7-3 17:24:47 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 系统消息 于 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, 下载次数: 69

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

评分

参与人数 1威望 +30 宅币 +90 贡献 +30 收起 理由
0xAA55 + 30 + 90 + 30 屌!

查看全部评分

回复

使用道具 举报

发表于 2021-11-25 18:39:13 | 显示全部楼层
新人来报道了。看QQ群的讨论,过来学习下,楼主辛苦了!所有VB6爱好者的福音啊
回复 赞! 1 靠! 0

使用道具 举报

发表于 2021-7-3 23:38:24 | 显示全部楼层
发布一下bug版本的演示图和修复版本的演示图,效果会更好哟
回复 赞! 1 靠! 0

使用道具 举报

发表于 2021-7-3 17:40:48 | 显示全部楼层
前排支持YY菌魔改DX!
原来DX8的DrawText竟然是默认A版?!
那这个DLL是不是有机会修复一些国外DX8游戏的乱码问题?
回复 赞! 靠!

使用道具 举报

 楼主| 发表于 2021-7-3 18:02:17 | 显示全部楼层
秋枫萧萧 发表于 2021-7-3 17:40
前排支持YY菌魔改DX!
原来DX8的DrawText竟然是默认A版?!
那这个DLL是不是有机会修复一些国外DX8游戏的乱 ...

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

使用道具 举报

发表于 2021-7-3 18:06:38 | 显示全部楼层
VBer们的福音,我肯定不会研究它的源码的,望楼主继续维护之。
阿里阿多
回复 赞! 靠!

使用道具 举报

发表于 2021-7-3 18:12:09 | 显示全部楼层
厉害啊。。。膜拜大神。。。
回复 赞! 靠!

使用道具 举报

发表于 2021-7-4 08:52:45 | 显示全部楼层
厉害了.
回复

使用道具 举报

发表于 2021-7-4 09:11:13 | 显示全部楼层
支持YY菌魔改DX!
原来DX8的DrawText竟然是默认A版
回复 赞! 靠!

使用道具 举报

 楼主| 发表于 2021-7-5 14:15:46 | 显示全部楼层
Ayala 发表于 2021-7-3 23:38
发布一下bug版本的演示图和修复版本的演示图,效果会更好哟

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

使用道具 举报

发表于 2021-7-6 04:57:13 | 显示全部楼层
LZ能否用DX来制作一个山寨CS甚至山寨GTA(凭个人之力)?
回复 赞! 靠!

使用道具 举报

 楼主| 发表于 2021-7-6 10:00:17 | 显示全部楼层
美俪女神 发表于 2021-7-6 04:57
LZ能否用DX来制作一个山寨CS甚至山寨GTA(凭个人之力)?

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

使用道具 举报

发表于 2021-7-6 11:02:00 | 显示全部楼层
回复就回复,反正也是回复
回复 赞! 靠!

使用道具 举报

发表于 2021-7-7 00:22:22 | 显示全部楼层
系统消息 发表于 2021-7-6 10:00
不能,我DX主要是在搞的2D方面,3D方面不熟,最多只了解一点点基本原理。 ...

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

使用道具 举报

 楼主| 发表于 2021-7-7 10:13:56 | 显示全部楼层
美俪女神 发表于 2021-7-7 00:22
A5群里除了A5,还有没有谁懂得搞3D的?我在2014年就跟A5提过山寨CS/山寨GTA,现在我儿子都会打酱油了,山 ...

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

使用道具 举报

发表于 2021-8-19 09:53:04 | 显示全部楼层
膜拜大佬
回复

使用道具 举报

发表于 2021-9-11 17:54:32 | 显示全部楼层
膜拜大佬
回复

使用道具 举报

发表于 2021-11-12 21:12:25 | 显示全部楼层
vb 好想看一下内容
回复 赞! 靠!

使用道具 举报

发表于 2021-11-24 09:13:41 | 显示全部楼层
来看看用什么方式优化修复BUG的
回复 赞! 靠!

使用道具 举报

发表于 2021-12-3 08:46:11 | 显示全部楼层
呜呼 来赞一个!!!
回复 赞! 靠!

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-11-13 14:31 , Processed in 0.039701 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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