融合技术

来源:互联网 发布:电信云计算分公司 面试 编辑:程序博客网 时间:2024/03/28 19:51

融合blending技术


     该技术能使我们将当前要进行光栅化的像素的颜色与先前已光栅化并处于同一位置的像素的颜色进行合成.主要是透明效果

 

注意的是:
    首先绘制那些不需要进行融合的物体,然后将需要进行融合的物体按照相对于摄像机的深度值进行排序,按照自后往前的顺序逐个绘制将要进行融合的物体


一.融合方程:
融合后的颜色=源像素颜色*源整合因子+后台缓存像素颜色*目标融合因子.

 

Direct3D中,默认状态下是禁止整合运算的,
device->SetRenderState(D3DRS_ALPHABLENDENABLE, true);

 

二.融合因子:
通过设定源融合因子和目标融合因子,我们可创建一系列不同的融合效果.
device->SetRenderState(D3DRS_SRCBLEND, source);//源资源
device->SetRenderState(D3DRS_DESTBLEND, source);//目标资源

 

三.透明度
每个顶点颜色中的Alpha分量与颜色值类似,都是沿着三角形单元表面渐变,但它并非用于确定某像素的颜色值,而用于确定像素的Alpha分量
顶点Alpha值为0是透明,为128半透明,255不透明


1.Alpha通道;
我们并不直接使用计算得到 的Alpha分量,而往往是从纹理的Alpha通道中获取Alpha信息Alpha通道是保留给存储了Alpha分量的纹理元的一个额外的位集合


2.指定Alpha来源
默认状态下,如果当前设置的纹理拥有一个Alpha通道,Alpha值就取自该Alpha通道.如果没有Alpha通道,Alpha值就取自顶点的颜色.
device->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE);
device->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTA_SELECTARG1);

 

device->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
device->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTA_SELECTARG1);

代码:

 

原创粉丝点击