游戏开发论坛

 找回密码
 立即注册
搜索
楼主: 芙ZM

(求救)资源解包问题

[复制链接]

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2006-5-28 15:40:00 | 显示全部楼层

Re:(求救)资源解包问题

网上很多这些文件格式的说明,
照着写个解码函数啦,
不然就用D3DX,
至于声音文件的处理,
网上也有好多开源的音频库可以用,
把音频文件读到内存再用音频库实时解码播放就行了,
我之前写的那个游戏引擎就是这么做滴~~

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2006-5-28 15:42:00 | 显示全部楼层

Re:(求救)资源解包问题

另外,
我觉得若非商用没必要自己去写什么打包程序了,
zlib已经做得很好了~~

8

主题

310

帖子

311

积分

中级会员

Rank: 3Rank: 3

积分
311
QQ
 楼主| 发表于 2006-5-28 17:49:00 | 显示全部楼层

Re:(求救)资源解包问题

也许是我想多了,脑袋有点涨

3

主题

27

帖子

35

积分

注册会员

Rank: 2

积分
35
发表于 2006-5-29 10:45:00 | 显示全部楼层

Re:(求救)资源解包问题

直接把文件从包里读到内存然后解析,不要在硬盘生成文件。关键是要有从内存解析文件的函数,自己生成的格式自己写解析函数,大部分文件可以用已经写好的现成函数,比如D3D程序的贴图文件,从硬盘文件读取可以用,D3DXCreateTextureFormFile(),从包里读取的时候先把要创建的贴图文件读取到内存,然后用 D3DXCreateTextureFromFileInMemory() 解析内存中的文件。

18

主题

65

帖子

65

积分

注册会员

Rank: 2

积分
65
QQ
发表于 2006-5-29 14:55:00 | 显示全部楼层

Re:(求救)资源解包问题

直接拉到内存里面 用Pointer来读取就可以了 这样最省力
如果数据被压缩过 读取稍微难点 如果是顺序存储的数据 就比较简单
比如你读到两个字节为'BM' 那么你就应该知道自己的Pointer可能指到了BMP数据流上 接着就做你喜欢做的。。。

6

主题

24

帖子

24

积分

注册会员

Rank: 2

积分
24
发表于 2006-5-29 18:14:00 | 显示全部楼层

Re:(求救)资源解包问题

ClickLee兄弟说的没错~~~~~~~
不过,单凭判断"BM"来说名这是某个BMP文件的开头,好象不太严谨哦~~~~~~~~~~
我的做法就是利用"D3DXLoadTextureFromMemory",非常好用的说~~~~~~

8

主题

310

帖子

311

积分

中级会员

Rank: 3Rank: 3

积分
311
QQ
 楼主| 发表于 2006-5-29 21:39:00 | 显示全部楼层

Re:(求救)资源解包问题

发现D3DXLoadTextureFromMemory非常好,哈哈

18

主题

65

帖子

65

积分

注册会员

Rank: 2

积分
65
QQ
发表于 2006-5-30 08:53:00 | 显示全部楼层

Re:(求救)资源解包问题

D3DXLoadTextureFromMemory的确不错哈
如果你用GL怎么办 这些东西最好不要太依赖API哦

13

主题

978

帖子

978

积分

高级会员

Rank: 4

积分
978
发表于 2006-5-30 15:45:00 | 显示全部楼层

Re:(求救)资源解包问题

纹理可以这么弄,那其他类型的文件呢?
我的意思是,把打包后的文件读取一部分到内存中作为特定格式的文件交给dll处理

20

主题

94

帖子

103

积分

注册会员

Rank: 2

积分
103
发表于 2006-5-30 17:52:00 | 显示全部楼层

Re:(求救)资源解包问题

我还没有用过D3DXLoadTextureFromMemory呢,怎么用?
难道直接把pak文件读到内存,然后D3DXLoadTextureFromMemory(xx.bmp)就可以了吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 15:31

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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