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

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

(转载请注明出处)


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


实现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的

Direct2D 1.1 开发笔记 特效() 径向模糊 Direct2D 1.1 特效: 径向模糊, 基本算法解释. 阅读详情

相关推荐

Direct2D 1.1 开发笔记 特效() 图形调试

在VS里面调试Direct2D图形

dustpg的专栏 3889

Direct2D-着色器特效02

Direct2D 1.1 开发笔记 特效() 简单像素着色器特效》附带资源

C#实战:基于NAudio与Direct2D的高性能实时音乐频谱可视化

音频信号处理是多媒体开发中的基础技术,其核心原理是将时域波形通过快速傅里叶变换(FFT)转换为频域频谱,从而揭示声音的频率构成。这项技术在工程实践中价值显著,能够实现音频分析与可视化。常见的应用场景包括音乐播放器的动态频谱显示、音频编辑软件的频率分析,以及游戏中的实时音效反馈。本文聚焦于利用C#的NAudio库高效捕获和处理音频流,并结合Direct2D硬件加速图形接口,构建一个流畅的实时音乐频谱分析器,其中涉及FFT计算、分贝转换以及对数频率映射等关键步骤,最终通过动态柱状图等形式实现音画同步的酷炫效果。

蓝色妖姬 416

Direct2D 自定义特效01

Direct2D 1.1 开发笔记 特效() 简单的自定义特效》附加资源

DirectX 2D游戏编程基础】directx 精灵绘图的应用,锚点与变换

其实,这个博客只介绍一个函数,就是D3DXMatrixTransformation2D,矩阵变换函数,在使用这个函数之前,我们需要先定义一个矩阵变量D3DXMATRIX g_matWorld; 这是D3D里面定义的矩阵,用于实现图片的平移,旋转,缩放变换,而图像的锚点是什么呢,我们暂且把它认为成逻辑上的中心点,默认是在图片左上角,旋转的时候以它为中心,显示的时候,将这个点认为是图片坐标系的原点,

Heaven 2544

Direct2D教程VIII——几何(Geometry)对象的运算,本系列的终结

目前博客园中成系列的Direct2D的教程有 1、万一的 Direct2D 系列,用的是Delphi 2009 2、zdd的 Direct2D 系列,用的是VS中的C++ 3、本文所在的 Direct2D教程 系列,用的是VS2010的Visual Basic语言(可以很方便的转为C#),基于Windows API Code Pack 1.1。   还有官方的说明文档 Direct2D ...

weixin_34392435的博客 225

MFC+Direct2D简化坐标缩放

背景问题由来在参考1文章里写了GDI下坐标缩放的情况,这里记录下再Direct2D绘图引擎下的缩放操作。环境配置参考文章2几个概念参考上一文章的说明配图 实现功能 1.所有图形初始缩放在默认视图框架内 2.(0,0)位置位于视图左下角 3.可以从屏幕坐标反推出原始数据坐标 4.使用Direct2D技术,在保持抗锯齿效果的同时,绘图效率和GDI差不多 思路及代码流程图

小猿一枚的专栏 3363

Win2D高级特效:如何创建自定义像素着色器效果完整指南

Win2D是一个强大的Windows Runtime API,专为GPU加速的2D图形渲染设计,让C#、C++和VB开发者能够轻松创建高性能的视觉效果。通过自定义像素着色器,您可以实现独特的高级图形特效,本文将详细介绍如何在Win2D中创建自定义像素着色器效果。💻✨ [![Win2D像素着色器特效示例](https://raw.gitcode.com/gh_mirrors/wi/Win2D/r

gitblog_00642的博客 415

Win2D入门指南:10分钟学会GPU加速的2D图形渲染

Win2D是一款由微软开发的Windows Runtime API,专门为Windows Universal Platform (UWP)和WinUI3应用提供GPU加速的2D图形渲染功能。无论您是C#、C++还是VB开发者,都能通过这个简单易用的API快速创建高性能的2D图形应用。🎨 ## ✨ Win2D核心优势 Win2D最大的亮点在于它**充分利用了Direct2D的强大功能**,同时

gitblog_00131的博客 407

Java炫彩界面开发:JSCM-Core双引擎实战

图形渲染引擎是现代GUI开发的核心组件,通过底层API调用实现硬件加速渲染。Skija作为Skia的Java绑定提供跨平台支持,而Direct2D则充分发挥Windows平台的DirectX硬件加速优势。这类技术显著提升了Java应用的视觉效果实现能力,特别是在需要复杂渐变、动态光影等高级特效的场景。JSCM-Core创新性地整合了双渲染引擎,开发者可以便捷地实现金属质感、粒子效果等需求,适用于数据可视化、游戏UI等对视觉效果要求较高的领域。通过合理的着色器应用和渲染批处理,即使在Java生态中也能达到接近

weixin_30527423的博客 414

Godot像素游戏渲染优化:视口分层与整数倍缩放方案详解

2D游戏开发中,像素艺术渲染常面临模糊、锯齿等问题,其根源在于现代GPU的线性过滤机制与低分辨率像素图的固有冲突。线性过滤通过颜色插值实现平滑缩放,却破坏了像素艺术所需的硬朗边缘。为解决此问题,视口分层渲染技术应运而生,它通过隔离渲染层、固定逻辑分辨率、整数倍放大显示等核心原理,在保持像素完美清晰度的同时,实现了UI与游戏逻辑的分离,并支持高效的后期处理。该技术在复古风格平台跳跃、俯视角射击及策略战棋等游戏类型中具有重要应用价值,能显著提升视觉呈现的专业感。本文以Godot引擎为例,深入解析如何通过Sub

weixin_30321709的博客 493

GPU硬件加速

了解什么是GPU硬件加速,需要先了解什么是GPU; GPU(Graphic Processing Unit)图形处理芯片: 它是显示卡的“心脏”,也就相当于CPU在电脑中的作用,它决定了该显卡的档次和大部分性能,同时也是2D显示卡和3D显示卡的区别依据; 2D显示芯片在处理3D图像和特效时主要依赖CPU的处理能力,称为“软加速”; 3D显示芯片是将维图像和特效处理功能集中在显

Mr_li13的博客 1475

从FIFE到Godot:2D RTS游戏引擎迁移与架构重构实战

游戏引擎是游戏开发的底层核心框架,它决定了项目的技术栈、开发效率和最终表现。引擎的架构思想,如组件化、数据驱动和节点化,深刻影响着游戏逻辑的组织方式与可维护性。在游戏开发中,引擎迁移是一项重大技术决策,其核心价值在于拥抱更现代化的工具链、活跃的社区生态以及更强大的渲染与性能优化能力,从而提升项目的长期生命力和开发体验。这类重构常见于独立游戏或中小团队,当原有引擎(如专注于经典2D RTS的FIFE)在应对复杂技能系统、现代UI或性能需求时遇到瓶颈,转向Godot这类灵活、开源的现代引擎便成为必然选择。本文即

weixin_30859423的博客 369

Direct3D 开发之旅 3D 游戏基本概念的介绍1

3d游戏是相对于2d游戏而言,就是是游戏角色具有立体感。 3D游戏的官方解释为 3D游戏是使用空间立体计算技术实现操作的游戏。从编程实现角度来说游戏基础模型(游戏的人物,场景,基础地形)是使用维立体模型实现的,游戏的人物角色控制是 使用空间立体编程算法实现的,那么就把这种...

weixin_33939843的博客 260

ALPHA通道处理全解析:从原理到GUI开发排障实战

在GUI开发中,半透明效果是提升视觉体验的关键,但图标边缘光晕、窗口黑底、动画闪烁等问题的根源,往往指向图层的ALPHA通道处理。ALPHA通道是RGBA像素格式中决定透明度的核心分量,其处理逻辑涉及直通与预乘两种存储方式,直接影响图像合成结果。理解ALPHA的合成公式与格式差异,是解决跨平台渲染异常的基础。在Qt、WebGL、LVGL等主流框架中,ALPHA的格式选择与混合参数配置各有讲究,错误处理不仅导致颜色失真,还会带来严重的性能开销。本文结合工程实践,系统梳理ALPHA通道在GUI方案中的处理流程、

weixin_34128839的博客 359

AS3.0与Starling框架:GPU加速2D图形渲染实战指南

GPU加速渲染是现代图形应用提升性能的核心技术,其原理是将图形计算任务从CPU卸载到专为并行处理设计的图形处理器上。这项技术能显著降低CPU占用,实现高帧率渲染,对于游戏和交互式应用开发具有重要价值。在Flash/AIR生态中,Stage3D API提供了底层的GPU访问能力,而Starling框架则在其之上构建了易于使用的2D抽象层,让开发者能以熟悉的显示列表编程模式享受硬件加速带来的性能飞跃。本文聚焦于利用AS3.0结合Starling框架解决传统矢量渲染的性能瓶颈,通过环境搭建、核心概念解析与实战优化

weixin_34357928的博客 269

第九章 纹理贴图

DDS对于3D图形来说是一种理想的格式,因为它支持一些专用于3D图形的特殊格式以及纹理类型。从本质上来讲,它实为一种针对GPU而专门设计的图像格式。mipmapGPU能自行解压的压缩格式纹理数组立方体图(cube map,也有译作立方体贴图)体纹理(Volume texture,也有译作体积纹理、立方体纹理等)更节省磁盘空间DDS格式能够支援不同的像素格式。像素格式由枚举DXGI_FORMAT中的成员来表示,但是并非所有的格式都适用于DDS纹理。非压缩图像数据一般会采用下列格式。

m0_57958061的博客 929

VC++文字颜色渐变实现:从GDI到GDI+的图形渲染实战

在图形界面开发中,颜色插值是实现动态视觉效果的核心技术之一,其本质是在RGB或HSL等颜色空间中进行数学计算,生成平滑过渡的中间色。这项技术通过线性插值等算法,将静态的文字或图形转化为富有表现力的视觉元素,在提升用户体验和界面美观度方面具有重要价值。它广泛应用于游戏特效、数据可视化、多媒体播放器等需要突出动态信息的场景。本文聚焦于Windows平台下的VC++开发,深入探讨如何利用GDI和GDI+等原生API,结合颜色空间转换与路径填充原理,高效实现高质量的文字渐变效果,并针对字体抗锯齿、绘制性能优化等常见

aqc802886的博客 420
上一篇: Kinect for Windows SDK v2.0 开发笔记 (十一) 高清面部帧(2) 面部特征对齐
下一篇: Direct2D 1.1 开发笔记 特效篇(四) 图形调试
dustpg
博客等级 码龄15年 774粉丝 35原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值