佚名通过本文主要向大家介绍了d3d加速器下载,d3d10warp.dll,d3d,d3d12.dll,d3d和gdi哪个好等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 关于D3D纹理混合的实现
描述:
解决方案1:
描述:
现在想实现一个简单的纹理混合功能,用两张纹理,一张为底图,一张为alpha图,希望能够达到alpha为0的地方绘制对应部分的底图;alpha=1的地方底图不显示。地图和alpha图大小一致,并且都带alpha通道。如何实现?主要是为了实现圆形小地图,底图是一张画好的地图,alpha是中间透明的圆形,外面是不透的类似【】。分不多了,请指点!
解决方案1:
简单方法:
AlphaFormat设置为0
SourceConstantAlpha设置为255
配合一张圆形部分什么都没有(不是RGBA值都为0而是没有值)的alpha图
复杂方法:
AlphaFormat设置为AC_SRC_ALPHA
加一个tmpMap保存计算后的图输出
再或者不使用Alpha混合
如果有一张黑色背景中间白色圆的图 只需要将白色设置为关键色进行透明处理即可
这样只需要在绘制地图后再绘制关键色图即可
就是混合两张纹理,具体的混合方式使用PixelShader很方便,甚至可以指定某个区域的红色分量作为判断条件,另一个区域的蓝色分量作为操作数。完全是数学方面的运算。