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

解决方案 »

  1.   

    我不知道怎么写了,但以前有个电子手册,是Win API 大全,上边有讲不规则图形裁剪,但我找不到把它丢哪去了。
      

  2.   

    顶点格式中对color进行比较
    先把要渲染的图放在一个缓冲中,
    掩码图放一个缓冲中,
    shader颜色的格式是浮点数,所以红色只需比较掩码的color.r 是否等于1.0
    然后进行颜色合成
      

  3.   

    那我要是想把屏幕缓冲传进shader怎么传?比如想要实现内置的Blend效果
    src图是我的纹理 dest就应该是屏幕缓冲