DirectX模板技术解析基础三

来源:互联网 发布:苏小红c语言第三版 编辑:程序博客网 时间:2024/06/13 06:11

 

作者:StrongCoding

 

邮箱:StrongCoding@qq.comDX群:130302441

 

若文中有误,请告知.十分感谢.一起加油.

 

 

 

这一篇,主要是针对其中的比较重要,可能是你比较模糊的概念或者代码片段的重要分析:

 

一、ALPHABLEND

 

      (1) 在渲染模板镜子的时候曾用到了混合

  

    Device->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_ZERO );

    Device->SetRenderState( D3DRS_DSTBLEND, D3DBLEND_ONE );

 

    上面这个东西实际上是阻止写入到后缓存,这是网上人说的,依我的测试,这个东西仅仅是混合镜子而已,并没有网上说的那    样 子。

 

     (2) 在渲染茶壶的时候也用到了混合

 

    Device->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_DESTCOLOR );

    Device->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_ZERO );

 

二、关于是否开启深度的问题

 

我们之前在渲染茶壶的时候,之前曾关闭了深度缓存写的功能。这是一个需要重点解释的一个东西:

因为那个镜子的深度值我们没有设置是为0的,也就是没有深度值的;而我们的茶壶是有深度值的;也就意味着茶壶会在镜子后被渲染,我们是看不到的,被镜子给挡住了;再是茶壶的模板值为1,也就注定了它仅仅会在镜子那个面被渲染。最终导致了我们对于反射的茶壶是看不到的。

原创粉丝点击