游戏开发论坛

 找回密码
 立即注册
搜索
楼主: 轩辕崇正

想了一个图像压缩的算法,不知可不可行.

[复制链接]

11

主题

190

帖子

255

积分

中级会员

Rank: 3Rank: 3

积分
255
发表于 2011-3-15 11:03:00 | 显示全部楼层

Re:想了一个图像压缩的算法,不知可不可行.

3D游戏的话,用DDS最好了,如果想节省IO时间,在资源包里用lzo之类的解压速度快的算法压缩一下就行了,也不用自己写文件格式,如果是自己写的2d引擎使用的话,用RLE不错


-----------------
欢迎光临我的博客 http://www.thecodeway.com

34

主题

629

帖子

629

积分

高级会员

Rank: 4

积分
629
发表于 2011-3-15 11:45:00 | 显示全部楼层

Re:想了一个图像压缩的算法,不知可不可行.

资源包里放dds,不解释

1

主题

51

帖子

72

积分

注册会员

Rank: 2

积分
72
发表于 2011-3-17 10:00:00 | 显示全部楼层

Re: 想了一个图像压缩的算法,不知可不可行.

你是做2D还是3D?
3D的话,直接采用DDS.
2D的话,还是有很多有趣的玩法.
针对2D游戏的图片,有很多透明数据的特点,你可以将透明数据记录成一个特殊的值.
如0x8000表示透明与否,低15位表示有多少个个数据.如果是透明数据,则后面没有数据,否则,就是多少个有效像素.
该算法针对一行进行编码,然后修改2D的BitBlt方法,可以极大地提高2D绘制速度.因为透明数据可以直接跳过绘制.
缺点是绘制的时候,剪裁方法麻烦点.
本人在2001年的项目中应用过这样的方法,那是个单机游戏,可以在奔腾133,16M内存的机器上流畅跑(800x600)分辨率.

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2011-3-18 00:33:00 | 显示全部楼层

Re:想了一个图像压缩的算法,不知可不可行.

我vb6做的游戏里面用jpeg+2值bmp的透明色蒙版,不觉得慢

1

主题

40

帖子

40

积分

注册会员

Rank: 2

积分
40
发表于 2011-3-28 21:30:00 | 显示全部楼层

Re: Re: 想了一个图像压缩的算法,不知可不可行.

tearshark: Re: 想了一个图像压缩的算法,不知可不可行.

你是做2D还是3D?
3D的话,直接采用DDS.
2D的话,还是有很多有趣的玩法.
针对2D游戏的图片,有很多透明数据的...

兰兄?

tga + 7zip远好于png,无论是大小还是解压速度,dds做3d没跑

190

主题

1801

帖子

2096

积分

金牌会员

Rank: 6Rank: 6

积分
2096
QQ
发表于 2011-4-7 22:58:00 | 显示全部楼层

Re: Re: Re: 想了一个图像压缩的算法,不知可不可行.

轩辕崇正: Re: Re: 想了一个图像压缩的算法,不知可不可行.



给你列个表:
在我笔记本上,
读取bmp的速度:300毫秒
读取dds的速度:300毫秒
读取tga的速度:700毫秒
...

。。。
只能说你不了解png

png内部采用一个线性过滤器,将图像变换成对zip压缩友好的格式,然后再进行zip压缩。
png是无损压缩率最高的文件。

png支持多级级别压缩,你完全可以自定义png压缩级别,以取得性能和文件大小之间的平衡
如果你要看读取速度,那么你可以完全把png设置成一个不压缩的格式,这样你的读取速度就和bmp相当(其实现在bmp也有支持压缩的了)

png除了不支持多层外,对其他的支持都很好
包括支持rgb色,调色版色,黑白色,透明色,色深等

0

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2011-4-13 09:58:00 | 显示全部楼层

Re:想了一个图像压缩的算法,不知可不可行.

现在已经有了很多成熟算法的情况下,如果自己不是做算法的,没有对其它压缩算法的机理详细理解的情况下,不要自己创造发明,这种做法得不偿失。你创造的算法在实现和使用中会慢慢发现问题,在逐步修补过程中会发现以前自己发现的优点全都消失了,即使你很强,最终做出来的形态可能也就是目前已有的某种算法的翻版。
图形压缩若想取得好的压缩比并做到无损,现有的dxt以及类似7z,rar这些算法在压缩比和解码速度上有不错的平衡。
你说的那种算法是熵算法的初级想法,正式的熵算法是用HUFFMAN树将样本排序后得到每个样本的变长码,然后对目标进行变长编码,最终得到压缩比较好的结果。缺点是如果没有硬件的VLD单元,用查表的方法做解码,会占一些内存,速度也慢些,在嵌入式设备上使用需要考虑一下这方面的内容。
另外,如果楼主是做商业化的东西,如果自己不是搞算法的,千万不要触及算法层的东西,肯定会得不偿失的。

0

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2011-4-14 22:57:00 | 显示全部楼层

Re:想了一个图像压缩的算法,不知可不可行.

PNG是比较不错的

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
 楼主| 发表于 2011-4-15 18:25:00 | 显示全部楼层

Re:想了一个图像压缩的算法,不知可不可行.

现在借鉴了云风的was文件格式写了一个,压缩率挺高。50M能压到3.8M
dds只适用3D,因为3D拉伸了没关系,2D则非常严格,而且不区分图像尺寸问题。
游戏的专业性很强,有时一般的格式很难适应专业游戏开发。
为了做到最有效,最适合,必须特别针对某一种图像类型自己写压缩格式,比如地图的压缩格式和普通精灵动画的压缩格式就得区别对待,我没见过哪款2D商业游戏的场景图片是直接用png或直接用tga的。

16

主题

154

帖子

309

积分

中级会员

Rank: 3Rank: 3

积分
309
发表于 2011-4-15 20:39:00 | 显示全部楼层

Re:想了一个图像压缩的算法,不知可不可行.

dds的我怎么感觉失真很厉害呢.
was是什么格式的,能发个链接看看不.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-9 22:53

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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