您的位置:首页 > 其它

Alpha Test 透明通道测试技术做篱笆效果图

2013-10-22 19:44 337 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: