赞
踩
Alpha test是可以通过测试然后丢弃不需要渲染的像素的。顾名思义就是根据他的alpha值与某特定值比较。
这个技术做腐蚀效果,某些电影特技如:可以让一个人慢慢各个部位褪色,最后消失……等,而且不需要消耗什么计算时间。
计算公式:
IF as (Openration function) ref == true THEN accept pixel
ELSE reject pixel
例如,下面的代码:
- gd3dDevice->SetRenderState(D3DRS_ALPHATESTENABLE, true);//开启alpha test
- gd3dDevice->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);//后面参数是比较函数,就是说大于等于alpha值100的像素才渲染
- gd3dDevice->SetRenderState(D3DRS_ALPHAREF, 100);//设置比较值
比如做一个栏杆效果,可以用贴图做,而不用用立体几何画出来再实时渲染,这样会慢很多,
上面右边那幅画是带了Alpha Channel的图。大家可以用Photoshop来自己手动加上这个通道。一般bmp图像文件就支持保持Alpha Channel。Jpe应该是不支持的。
我们可以利用右边的图片来做一个如下一样的篱笆效果图:
只需要用一个四方体几何图形,然后用texturing技术就可以轻易的做出这样的效果图来。
Reference:
Introduction to 3D Game Programming with DirectX9.0C
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。