您的位置:首页 > Web前端

【DirectX3D】Blending Colors for Special Effects

2015-09-10 09:10 211 查看
本文系 学习 DirectX tutorial 笔记 ,原文及代码参考 directxtutorial.com/Lesson.aspx?lessonid=9-4-6

//------------------------------------------------------------------------------------------------------------------------------------------
本节讲诉的是颜色混合技术,还可以制作半透明,透明效果

Blend Operations

混合操作有5部分:源色,操作,目标色,目标因子。可表示如下

Final Color = (Source Color * Source Factor)Operation (Dest Color * Dest Factor)





颜色混合在写入后台缓存的时候进行。源色是正在画的像素颜色,目标色是画的像素后面的颜色,如上图

Source Factor and Dest Factor

因子常为0~1 之间的浮点数,在颜色混合时,初始颜色乘以混合因子。例如,做半透明效果,可以使用模型的alpha通道(0~255),这时

值会被转换为0~1,比如192即设置为0.75,即表示75%的brightness,加上25%的后面的颜色。

d3ddev->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);    // turn on the color blending
d3ddev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);    // set source factor
d3ddev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);    // set dest factor
d3ddev->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADD);    // set the operation


D3DBLENDOP_ADD 目标色会被加到 原色

D3DBLENDOP_SUBTRACT 目标色从原色中减去

D3DBLENDOP_REVSUBTRACT 原色从目标色中减去

D3DBLENDOP_MIN 使用参考值小的颜色

D3DBLENDOP_MAX 使用参考值大的颜色

下面是分别使用 ADD, SUBTRACT 的效果, 用subtract后,颜色会变暗,add颜色变亮丽些了





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: