`
jgsj
  • 浏览: 962041 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics