如何用DX做半透明的效果,也就是那种隐行效果
如何用DX做半透明的效果,也就是那种隐形效果
一种为自我隐形即可见背静,亦可见自己
一种为他人隐形即可见背静,不可见他人,但可以见到有个像水一样的透明人浮动。
感激不尽
问题点数:214、回复次数:4Top
1 楼magicren(小魔人)回复于 2001-12-23 19:19:02 得分 20
要用D3D做吧?你可以参考一下nVidia SDK里关于折射和反射的例子(也可以从它的网站上下载NVEffectBrowser完全版http://www.nvidia.com/developer.nsf)。如果要求不高的话,把顶点的Alpha值调低些,再把Alpha混合打开,也能实现隐形。Top
2 楼kabob(kk.Chen)回复于 2001-12-25 22:55:31 得分 20
http://cke.myrice.com/data/gamedev.htmTop
3 楼gddsky()回复于 2001-12-27 10:23:00 得分 174
你没有说明用什么方式做啊!!!
DDraw有很多人都为它做了汇编码的加速
D3D就简单一些了,只要把图像ALPHA因子设为50%就行了,你要的不就是半透明效果吗?
水一样浮动的人可就不那么简单了,这要先做好一个网格,再把这个网格进行水面处理,这样网格就会产生波形效果也就是扭曲,这样明白吗?
水波产生的原理我这里有一篇小文章,你要吗?
--------
这里有两张图,我不知道这个BBS能不能传图形的,先不传吧
--------
DDraw和汇编ALPHA加速都有,你要吗?
--------
inline WORD PixelAlphaBlending(DWORD x,DWORD y,int alpha)
{
// C++版
//x=((x&0xFFFF)|(x<<16))&0x7E0F81F;
//y=((y&0xFFFF)|(y<<16))&0x7E0F81F;
//DWORD result=(((y-x)*(alpha>>3)>>5)+x)&0x7E0F81F;
//return (WORD)((result&0xFFFF)|(result>>16));
//汇编版
__asm
{
mov ecx,x
mov edx,y
and ecx,63519 ;// 0000f81fH
and eax,2016 ;// 000007e0H
shl eax,16 ;// 00000010H
or eax,ecx
mov ecx,edx
and ecx,2016 ;// 000007e0H
and edx,63519 ;// 0000f81fH
shl ecx,16 ;// 00000010H
or ecx,edx
mov edx,alpha
sub ecx,eax
sar edx,3
imul ecx,edx
shr ecx,5
add ecx,eax
and ecx,132184095 ;// 07e0f81fH
mov eax,ecx
shr eax,16 ;// 00000010H
or eax,ecx
}
} Top
4 楼mjm_d(菠萝蜜多)回复于 2002-01-01 09:11:30 得分 0
要
mjm_d@163.netTop




