Direct2D 中的新增功能
以下是 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::D rawSvgDocument 方法
- 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 效果。 此功能以前在复合效果、ArithmeticComposite 效果和 ColorMatrix 效果的特定配置中可用,但新的内置效果使执行这些常见操作更容易。
Windows 10 的新增内容
为Windows 10添加了或更新了以下功能和 API。
子画面批处理
从 Windows 10 开始,Direct2D 支持创建和呈现子画面批处理。 与常规用途 DrawImage 方法相比,子画面批处理产生的每映像 CPU 开销明显减少。 这使得它们非常适合涉及数百或数千个并发图像的方案,例如游戏子画面或粒子系统。 有关详情,请参阅以下主题:
- ID2D1DeviceContext3::CreateSpriteBatch 方法
- ID2D1DeviceContext3::D rawSpriteBatch 方法
- ID2D1SpriteBatch 接口
渐变网格
从 Windows 10 开始,Direct2D 为渐变网格提供新的基元。 渐变网格通常由专业插画家在图形设计软件中使用,它们使艺术家能够渲染复杂的 (甚至照片逼真的) 具有矢量的所有内存和可伸缩性优势的多彩形状。 有关详细信息,请参阅以下主题:
改进了图像加载 API
从Windows 10开始,Direct2D 提供了用于加载图像的新 API ID2D1ImageSource。 图像源改进了现有图像加载 API,包括 CreateBitmapFromWicBitmap、位图源效果和 YCbCr 效果。 Direct2D 图像源将这些 API 的功能与对任意大图像的支持、与打印和效果的轻松集成以及许多优化(包括 YCbCr JPEG 和索引 JPEG)相结合。 有关详细信息,请参阅以下主题:
改进了对墨迹呈现的支持
从 Windows 10 开始,Direct2D 提供了一个新的基元来表示墨迹笔划。 Direct2D 墨迹笔划由贝塞尔曲线定义,支持不同的笔尖形状和转换,并且可能具有固定或可变的粗细。 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 效果是Windows 8中新增的一组 API,用于将高质量效果应用于图像。 它还包括允许你创建自己的自定义效果的 API。
所选相关 API:
从 Windows 8 开始,Direct2D 包括用于生成多线程应用的其他 API。 有关详细信息 ,请参阅多线程 Direct2D 应用 。
所选相关 API: