下面是 Direct2D 的一些新增功能。
Windows 10 创意者更新中的新增功能
为 Windows 10 创作者更新添加或更新了以下功能和 API。
支持 SVG 图像呈现
从 Windows 10 创意者更新开始,Direct2D 将支持分析和绘制 SVG 图像,使开发人员能够呈现在其最喜欢的矢量艺术工具中生成的资产,而无需先将它们转换为光栅图像。 使用此功能可改进应用内图标的磁盘占用量和缩放行为,并使用 Direct2D 的新 SVG 对象模型 API 对应用的 SVG 进行编程更改。 请注意,Direct2D 仅支持适用于图像的有限 SVG 子集,并且不支持所有 SVG 绘图功能。 如果需要浏览器级 SVG 兼容性或 SVG 的面向 Web 的功能,请考虑改用 XAML WebView 控件 。 有关详细信息,请参阅以下主题:
- Direct2D SVG 图像呈现示例
- SVG 支持
- ID2D1DeviceContext5::CreateSvgDocument 方法
- ID2D1DeviceContext5::DrawSvgDocument 方法
- ID2D1SvgElement 接口
改进了对颜色管理的支持
从 Windows 10 创意者更新版开始,Direct2D 将提供改进的颜色管理功能。 开发人员不再需要 ICC 配置文件才能使用 Direct2D 的颜色管理效果;他们现在可以使用 DXGI 颜色空间或构造自己的参数化颜色空间定义。 有关详细信息,请参阅以下主题:
- 颜色管理效果
- ID2D1DeviceContext5::CreateColorContextFromDxgiColorSpace
- ID2D1DeviceContext5::CreateColorContextFromSimpleColorProfile
Windows 10 周年更新的新增功能
为 Windows 10 周年更新添加了或更新了以下功能和 API。
改进了对颜色字体的支持
从 Windows 10 周年更新开始,Direct2D 现在支持呈现更广泛的颜色字体格式,使开发人员能够在其 Direct2D 支持的应用中使用比以往更多的字体类型。 这包括对以下项的支持:
- “COLR”OpenType 表,用于在字体中启用压缩矢量内容。 (自 Windows 8.1 起支持)
- “SVG”OpenType 表,用于在字体中支持 SVG 内容。
- “CBDT”OpenType 表,用于在字体中启用颜色位图内容。
- “sbix”OpenType 表,用于在字体中启用颜色位图内容。
启用 D2D1_DRAW_TEXT_OPTIONS_ENABLE_COLOR_FONT 标志时,Direct2D 会自动支持这些颜色字体格式。 有关详细信息,请参阅以下主题:
新图像效果
从 Windows 10 周年更新开始,Direct2D 包括 AlphaMask、CrossFade、Opacity 和 Tint 效果。 此功能以前通过 Composite、ArithmeticComposite 和 ColorMatrix 效果的特定配置来实现,但新的内置效果使执行这些常见操作更容易。
Windows 10 的新增功能
为 Windows 10 添加了或更新了以下功能和 API。
子画面批处理
从 Windows 10 开始,Direct2D 支持创建和呈现子画面批处理。 与常规用途 DrawImage 方法相比,子画面批处理产生的每映像 CPU 开销明显减少。 这使得它们非常适合涉及数百或数千个并发图像的方案,例如游戏子画面或粒子系统。 有关详细信息,请参阅以下主题:
- ID2D1DeviceContext3::CreateSpriteBatch 方法
- ID2D1DeviceContext3::DrawSpriteBatch 方法
- ID2D1SpriteBatch 接口
渐变网格
从 Windows 10 开始,Direct2D 为渐变网格提供新基元。 渐变网格常被专业插画师在图形设计软件中使用,它们允许艺术家呈现复杂的(甚至逼真)多色形状,并具有矢量格式提供的所有内存和可伸缩性优势。 有关详细信息,请参阅以下主题:
改进了图像加载 API
从 Windows 10 开始,Direct2D 提供用于加载图像的新 API ID2D1ImageSource。 图像源改进了现有的图像加载 API,包括 CreateBitmapFromWicBitmap、位图源效果和 YCbCr 效果。 Direct2D 图像源将这些 API 的功能与支持任意大型图像、与打印和效果轻松集成以及许多优化(包括 YCbCr JPEG 和索引 JPEG)相结合。 有关详细信息,请参阅以下主题:
改进了对墨迹渲染的支持
从 Windows 10 开始,Direct2D 提供了一个新基元来表示墨迹笔划。 Direct2D 墨迹笔划由 Bezier 曲线定义,支持不同的笔尖形状和变换,并且可能具有固定或可变的粗细。 Direct2D 对墨迹笔划的内置支持使应用能够轻松地更快渲染更美观的墨迹,而以前的方法则通常需要应用自己以一系列椭圆和四边形的形式管理墨迹。 有关详细信息,请参阅以下主题:
效果着色器链接
Direct2D 效果是使用 HLSL 像素、顶点和/或计算着色器实现的。 从 Windows 10 开始,Direct2D 现在会自动分析效果图,以便有机会合并和执行单个着色器。 这可以显著提高效果吞吐量。 内置效果的使用者无需执行任何作即可从效果着色器链接中获益,但构建自己的自定义效果的开发人员应遵循更新的最佳做法来利用效果着色器链接。 有关详细信息,请参阅以下主题:
效果着色器链接旨在不影响效果的视觉输出。 然而,由于效果精度和数值剪辑的特定相关行为,但这并非总是可行。 有关如何控制这些行为的详细信息,请参阅:
新的内置效果
从 Windows 10 开始,Direct2D 包括一组丰富的新内置效果,可解决顶级开发人员请求并启用新型视觉方案。 新效果如下:
颜色:
相片:
滤波器:
风格:
透明度:
Direct2D 照片调整 SDK 示例中演示了拉直、饱和度、对比度、高光与阴影、温度和色调效果。
Windows 8.1 的新增功能
为 Windows 8.1 添加或更新了以下功能和 API。
从 Windows 8.1 开始,Direct2D 基于 Direct3D 11.2 构建。
几何实现
从 Windows 8.1 开始,Direct2D 提供几何实现。 几何实现允许应用程序在某些情况下提高几何图形呈现性能,而无需将几何图形光栅化为位图的某些缺点。 有关详细信息,请参阅以下主题:
支持 JPEG YCbCr 图像
从 Windows 8.1 开始,Direct2D 支持以 JPEG Y'CbCr 格式呈现图像数据。 应用可以在其原生 Y'CbCr 表示形式中呈现 JPEG 内容,而无需解压缩到 BGRA 格式。 这可以显著减少图形内存消耗和资源创建时间。 有关详细信息,请参阅以下主题:
- Direct2D YCbCr 效果
- IWICPlanarBitmapSourceTransform 接口
支持块压缩格式(DDS 文件)
从 Windows 8.1 开始,Direct2D 支持包含DXGI_FORMAT_BC1_UNORM、DXGI_FORMAT_BC2_UNORM和DXGI_FORMAT_BC3_UNORM像素数据的位图。 应用可以将其图像资产替换为块压缩的 DDS 映像。 这可以显著减少图形内存消耗和资源创建时间。 有关详细信息,请参阅以下主题:
呈现优先级
从 Windows 8.1 开始,Direct2D 提供针对每设备渲染优先级的支持。 此新功能允许应用在正常呈现优先级(默认值)和低渲染优先级之间切换设备(设备不会阻止系统上的其他呈现任务)。 对于对用户响应能力影响不大的任务(例如预渲染内容、最小化期间的渲染,以及通常在后台执行的其他操作),建议应用使用低渲染优先级。 有关详细信息,请参阅以下主题:
Windows 8 的新增功能
为 Windows 8 添加了或更新了以下功能和 API。
在安装了适用于 Windows 7 的平台更新的 Windows 7 上,可以支持新的 Direct2D 接口。
Direct2D 的设备和设备上下文语义已更新,现在更类似于 Direct3D 使用的语义,并将在 Windows 应用商店中的应用上提供简洁的操作。 有关详细信息 ,请参阅设备和设备上下文 。
选定的相关 API:
使用命令列表 API 可以共享屏幕呈现和打印的呈现路径。 它还允许你使用基元创建用于填充基元的图像画笔。
选定的相关 API:
Direct2D 效果 是一组 API(Windows 8 中的新增功能)用于向图像应用高质量效果。 它还包括允许你创建自己的自定义效果的 API。
选定的相关 API:
从 Windows 8 开始,Direct2D 包括用于生成多线程应用的其他 API。 有关详细信息,请参阅 多线程 Direct2D 应用 。
选定的相关 API: