假设有个五角星,我想把一张图片画到五角型里,五角形外面画不上,类似PS在选区里面绘制的感觉。不规则裁剪图形我可以提前用另一张2D图片做成掩码图
GDI里直接blt就能实现。。到D3D里反而不会了。之前试过Stencil不过似乎Stencil不能选择关键色,也不能操作小于一个三角形的裁剪。
现在的思路就是用PS,先把掩码图绘制到缓冲区上,然后绘制第二个图片的时候向PS传入缓冲区,判断颜色。问题:
1 怎么把缓冲区传到shader里?
2 shader里我怎么判断是某个颜色?比如红色0xFF0000,在shader里怎么表示?大体思路我都有就是不知道怎么写,请加上代码片段。
GDI里直接blt就能实现。。到D3D里反而不会了。之前试过Stencil不过似乎Stencil不能选择关键色,也不能操作小于一个三角形的裁剪。
现在的思路就是用PS,先把掩码图绘制到缓冲区上,然后绘制第二个图片的时候向PS传入缓冲区,判断颜色。问题:
1 怎么把缓冲区传到shader里?
2 shader里我怎么判断是某个颜色?比如红色0xFF0000,在shader里怎么表示?大体思路我都有就是不知道怎么写,请加上代码片段。
先把要渲染的图放在一个缓冲中,
掩码图放一个缓冲中,
shader颜色的格式是浮点数,所以红色只需比较掩码的color.r 是否等于1.0
然后进行颜色合成
src图是我的纹理 dest就应该是屏幕缓冲