Direct2D 1.1 开发笔记 特效篇(三) 简单的像素着色器特效

这篇博客介绍了如何使用Direct2D 1.1和HLSL来实现一个简单的像素着色器特效——颜色反相。通过创建ID2D1DrawTransform接口,利用HLSL编写的像素着色器,可以高效地对颜色进行反转处理。文章详细讲解了D3D11渲染管线,并提供了Shader的编写和注册步骤。
摘要由CSDN通过智能技术生成

(转载请注明出处)


这次我们实现一个自定义的转变。


实现Direct2D 自定义转变Shader Models需要HLSL(High Level Shading Language)的实现。

HLSL是Shader的一种实现,但是HLSL只能在D3D中使用,所以有点蛋疼。

Shader被描述为显卡执行的小段程序,能够高效(并行)地执行。


没学过?没关系,笔者也没有,但是详细的不会在这里说明(你TM逗我(╯‵□′)╯︵┴─┴),请到官网中看看。


D2D 特效能用 HLSL 的  4.0 及其以上版本(Shader Models 4.0),这是在D3D 10中实现的。

但是我们为了编程的方便,强行要求显卡支持D3D11,毕竟笔者的破集成显卡都支持D3D11。


D2D 特效能够使用的着色器有: 像素着色器顶点着色器计算着色器


这次的主题就是写一个简单的像素着色器转变——反相,就是将颜色反转过来。

想想若是CPU执行,先是需要将几兆的数据翻转过来,再送到显卡显示,效率堪忧。


先看看D3D11 的渲染管线吧。

当然D2D没有这么复杂,光栅化也简单,毕竟是2D。

这个管线看看就行,除非你开发D3D11程序,D2D特效只需了解即可——像素着色器是几个操作最后一步(除了OM输出)



实现D2D像素着色器特效,需要实现ID2D1DrawTransform,查看头文件会发现:

ID2D1DrawTransform-----继承于---->ID2D1Transform-----继承于---->ID2D1TransformNode-----继承于---->IUnknown


而ID2D1TransformNode就是我们上一节中提到的"转变节点",什么AddNode、SetOutputNode的

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值