游戏开发论坛

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

各位高手看过来:)DDraw问题

[复制链接]

56

主题

758

帖子

768

积分

高级会员

Rank: 4

积分
768
发表于 2008-7-11 15:54:00 | 显示全部楼层

Re:各位高手看过来:)DDraw问题

我现在担心的是DX的发展使得DX5.0下的游戏不能在高版本的DX上运行

86

主题

2251

帖子

2386

积分

金牌会员

Rank: 6Rank: 6

积分
2386
QQ
发表于 2008-7-11 21:46:00 | 显示全部楼层

Re:各位高手看过来:)DDraw问题

不会,运行时可以带数个版本

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2008-7-13 10:13:00 | 显示全部楼层

Re:各位高手看过来:)DDraw问题

没有的事情。谈谈我的解决巴。我甚至可以用高压缩的jpeg,使用色彩建,但边缘不会有任何毛刺。其实只要另外保存一个二值位图即可。黑色的是透明色的部分。然后加载的时候指定AND位运算即可。

但你说BMP有毛刺我觉得,是不是从压缩过的图像转成的BMP? 此外,不要完全用PS。因为PS反而帮了我门一个倒忙。用PS做好之后要用比如画图去修改边缘

尽量不要用alpha通道。因为,如果你用alpha去改善边缘的毛刺,我觉得,用的很“消极”。其实妥善处理了BMP中的边缘即可。alpha是很慢的操作!

2

主题

79

帖子

85

积分

注册会员

Rank: 2

积分
85
QQ
发表于 2008-7-13 13:35:00 | 显示全部楼层

Re: Re: 各位高手看过来:)DDraw问题

snow009: Re: 各位高手看过来:)DDraw问题

谢谢大家对小弟的帮助,尤其感谢kissorange大哥,还想罗嗦一下,不知道DDRAW支持不支持ALPHA边缘的TGA呢?就...


  TGA本身就是带通道的BMP,正如带通道的32位BMP哪样,只不过TGA有自已的通道图,而32ALPHA BMP只是把通道值放在原来没有用的高8位了,所以,两者之间本质其实是没有差别的。你要做的是装载TGA图到surface时做相应的修改,但是最终的32位surface是不变的。

  中间alpha blt的代码是用了MMX优化的,我也是从网上找回来的资料,做了一些封装了。

 

2

主题

79

帖子

85

积分

注册会员

Rank: 2

积分
85
QQ
发表于 2008-7-13 13:51:00 | 显示全部楼层

Re: Re:各位高手看过来:)DDraw问题

汗......

  一个二值位图与alpha通道图在本质上是完全不同的,你所指的二位图,实质上是用Colorkey的方式。所以如果是有毛刺的图,二位图跟colorkey一样的效果。你的方式,美工的工作量是多少你清楚不?

  不知你是否理解alpha的实质,通过alpha的通道方法,可以实现半透明这类的显示效果,alpha方式可以达到photoshop这类软件真实的出图显示效果。而二位图没有透明,只能选择填不填充进去,根本不能使用在带随机象素的图,好象水花,火这类的图。

  “消极”和慢?为何有此说? 我说下我的检试数据:直接用ddraw的blt拷贝和用我上面提供的alpha blt,都是800X600的32 surface,alpha blt只用多了2ms,而
1000ms = 1秒,alpha blt速度完全可以达到要求。


86

主题

2251

帖子

2386

积分

金牌会员

Rank: 6Rank: 6

积分
2386
QQ
发表于 2008-7-13 23:20:00 | 显示全部楼层

Re:各位高手看过来:)DDraw问题

不对边缘进行处理,拿只能使用手绘精灵。而现在大多数开发使用的是建模预渲染得到的精灵,边缘肯定难看。
inst你还不如用RLE压缩精灵呢,无论占用的空间和绘制时间都最优,前提是你的精灵颜色尽量单一。

86

主题

2251

帖子

2386

积分

金牌会员

Rank: 6Rank: 6

积分
2386
QQ
发表于 2008-7-13 23:31:00 | 显示全部楼层

Re:各位高手看过来:)DDraw问题

还有,关于轮廓处理,不想做全图alpha,可以参考:
http://www.codingnow.com/leanview/leanv07.htm
http://www.codingnow.com/2000/gamedev/tips/contour.htm

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2008-7-14 12:04:00 | 显示全部楼层

Re: Re: Re:各位高手看过来:)DDraw问题

kissorange: Re: Re:各位高手看过来:)DDraw问题

汗......

  一个二值位图与alpha通道图在本质上是完全不同的,你所指的二位图,实质上是用Colorkey的方...


没错,的确是一样的。但如果你想在jpeg中用colorkey,那么,最起码,要附带一个2值BMP蒙板。
加入colorkey已经可以解决,就没有必要用alpha,
而复杂的情况,比如funcman说的模型预渲染的精灵,那么,就用alpha通道吧。
如果用D3D加速就更爽了,alpha不用白不用。

此外以往的2D游戏,大多是在人物周围加上一个黑色边框线,这也不错。

而对于比如 火焰 这样的东西,我观察过diablo2的某些火焰,发现并没有任何alpha,
而我在PS中制作的火焰,效果就很不理想( 我PS里面的背景是黑色的-___- )

我说的“消极”你不要误解,我是指,比如我画一个 圆 ,
结果被PS弄出来了恶心的边缘,但我就算用 画图 也明明可以轻松完成它,那真是哭笑不得。

MMX太强大了。我前几天才写的alpha代码,没用汇编,而且只是单一alpha值的。
报一下我的数据: 800*600  32bit 下面是最快 14 FPS,最低 10 FPS.
Release版本优化全开。CPU 800 MHz

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2008-7-14 12:31:00 | 显示全部楼层

Re: Re:各位高手看过来:)DDraw问题

funcman: Re:各位高手看过来:)DDraw问题

不对边缘进行处理,拿只能使用手绘精灵。而现在大多数开发使用的是建模预渲染得到的精灵,边缘肯定难看。
inst你还不如用RLE压缩精灵呢,无论占用的空间和绘制时间都最优,前提是你的精灵颜色尽量单一。


恩,这个好。让美工们用3D,然后用2D精灵渲染,等到3D引擎完工了,再用3D去渲染。
RLE没听说过,汗...
文章看了,确实很不错。加入收藏了。

3

主题

30

帖子

30

积分

注册会员

Rank: 2

积分
30
 楼主| 发表于 2008-7-14 13:28:00 | 显示全部楼层

Re: Re:各位高手看过来:)DDraw问题

instemast: Re:各位高手看过来:)DDraw问题

没有的事情。谈谈我的解决巴。我甚至可以用高压缩的jpeg,使用色彩建,但边缘不会有任何毛刺。其实只要另外...

呵呵,实际上有的时候需要显示一个有光晕效果边缘的物体,比如发光的灯泡,有羽毛的动物,等等。这就难办了 [em5]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-21 23:58

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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