转自:http://www.cnblogs.com/graphics/archive/2011/04/02/1964156.html

什么是Direct2D

一言以蔽之,就是Windows 7平台上的一个2D图形API,可以提供高性能,高质量的2D渲染。大多数人对Direct2D可能都比较陌生,以至于我之前在论坛上提到这个词的时候,有人竟然说你是不是写错了?可能大家比较熟悉的是Direct3D,因为D3D已经是当前游戏界的主流应用。在过去,3D世界是OpenGL与DirectX二分天下,但是由于OpenGL发展十分滞后,而且没有一个像微软这样强大的后台支柱,所以逐渐被DirectX所超越。回过头来说2D,过去Windows上的2D程序还主要基于GDI和GDI+,遗憾的是这两者都是软件实现,而Direct2D则不同,它基于Direct3D,所以能够使用硬件加速功能,能更大程度的发挥硬件特性,创建高性能,高质量的2D图形,这些图形包括几何图形,如矩形,椭圆等。还有位图,文本。而且更方便的是,Direct2D与GDI,GDI+和D3D都是可以交互的。

运行需求

要开发和使用Direct2D程序,系统必须是Windows 7,Windows Vista SP2, Windows Server 2008 R2或者Windows Server 2008 SP2,这样的系统需求无疑会稍稍阻碍Direct2D前进的步伐,虽然Vista和Windows 7已经推出有一段时间了,但是不可否认的是,仍然有很多人在使用XP系统。甚至是Win2K。但是新技术的普及是不可阻碍的,相信不久的将来,Direct2D将会成为2D图形世界的主流。

D2D的架构

Direct2D是基于Direct3D 10.1 API构建的,这意味着Direct2D可以使用硬件加速,下图是Direct2D与Direct3D的一个关系图

由上图可以看出,Direct2D还自带了一个软件实现(Software rasterizer),这是因为如果显卡不支持硬件加速,那么Direct2D可以使用软件方式渲染,即使这样,效果还是要优于GDI的。上图中在Direct3D下面还有一个层叫DXGI,其全称是:DirectX Graphics Infrastructure,DXGI从Direct3D 10中才开始存在,主要是为了将一些与3D图形无关的工作从原本的runtime中分离处理,这些工作多是一些底层的操作,比如枚举设备,显示帧缓冲,gamma控制,管理全屏等,在Direct3D 10以前的版本中,这些操作全部集成到了Direct3D的API中,现在分离处理单独成为一个component,就是DXGI。

可视效果

使用Direct2D可以获得比GDI更加优秀的可视效果,Direct2D支持基于图元的抗锯齿效果,而且完全支持透明和Alpha混合。下图是GDI和Direct2D的一个比较,大家可以看一下,Direct2D的细腻程度可见一斑。

可交互性

Direct2D与Direct3D,GDI,GDI+都有着良好的交互性,因为他们都支持表面级别的操作,这里的表面在Direct3D中就是surface,而在GDI中则相当于DC(Device Context)。此外Direct2D还能很好的支持DirectWrite,DirectWrite也是DirectX中一个新的Feature,主要用来做文本的绘制。下图是这几者指间的关系

期待

虽然Direct2D有着明显的优势,但是想取代GDI仍然非短时间可以达到,为了保持向后兼容,微软在短时间内绝不会放弃GDI。如今Direct2D出世已经有一段时间了,GDI还有多少时间?对于Windows平台上的图形世界,DirectX一统江湖的日子还有多远?我们拭目以待!

参考:http://technet.microsoft.com/zh-cn/dd370987(v=vs.80)

Direct2D教程(一)相关推荐

  1. Direct2D教程II——绘制基本图形和线型(StrokeStyle)的设置详解

    目前,在博客园上,相对写得比较好的两个关于Direct2D的教程系列,分别是万一的Direct2D系列和zdd的Direct2D系列.有兴趣的网友可以去看看.本系列也是介绍Direct2D的教程,是基 ...

  2. Direct2D教程(二)来看D2D世界中的Hello,World

    引子 任何一门语言的第一个教程几乎都是Hello,world.我们也不例外,但是这里不是教大家打印Hello,world,而是编写一个简单的D2D绘制程序,让大家对Direct2D的程序结构及编程方法 ...

  3. Direct2D教程(三)简单几何图形

    从本章开始,我们介绍D2D几何图形. D2D图形分类 Direct2D支持多种类型的几何图形,包括 Simple Geometry(简单几何图形) 矩形 圆角矩形 椭圆 Path Geometry(路 ...

  4. Direct2D教程(九)渲染位图

    概述 这篇的标题更确切的说应该叫位图画刷,这样才好和前几篇对应起来.在Direct2D中,位图的渲染也是通过画刷来实现的. Direct2D中并没有直接操作位图的接口,而是借助WIC(Windows ...

  5. Direct2D教程(一)Direct2D已经来了,谁是GDI的终结者?

    什么是Direct2D 一言以蔽之,就是Windows 7平台上的一个2D图形API,可以提供高性能,高质量的2D渲染.大多数人对Direct2D可能都比较陌生,以至于我之前在论坛上提到这个词的时候, ...

  6. Direct2D教程(五)复合图形

    概述 Direct2D支持以下几种类型的几何图形. Simple Geometry(简单几何图形) 矩形 圆角矩形 椭圆 Path Geometry(路径图形) Composite Geometry( ...

  7. Direct2D教程(十二)图层

    什么是Layers? Layer,中文译成图层,在Direct2D中可以用来完成一些特殊效果,使用Layer的时候,先将Layer Push到render target,然后进行绘制,此时是直接绘制在 ...

  8. Direct2D教程(十一)几何变换

    什么是几何变换(Transform) 在图形学中,主要有三种几何变换,分别是平移(Translate),旋转(Rotation)和缩放(Scaling).在D2D中,这三种变换都有实现,而且还有一种不 ...

  9. dx绘制2d图像_Direct2D教程II——绘制基本图形和线型(StrokeStyle)的设置详解

    目前,在博客园上,相对写得比较好的两个关于Direct2D的教程系列,分别是万一的Direct2D系列和zdd的Direct2D系列.有兴趣的网友可以去看看.本系列也是介绍Direct2D的教程,是基 ...

最新文章

  1. Spring原理总结
  2. CentOS6.3挂载读写NTFS分区
  3. scala函数的定义
  4. 第二阶段_第一小节_小知识
  5. execve系统调用_张凯捷—系统调用分析(3) (基于最新Linux5.0版本系统调用日志收集系统)...
  6. 信息传递(NOIP2015提高组Day1T2)
  7. C++提高部分_C++类模板与继承---C++语言工作笔记091
  8. sql server 事务_如何使用显式SQL Server事务回滚
  9. 产品经理基本功:消息推送设计
  10. div+css完成首页布局
  11. PhoneGap + Dreamweaver 5.5 无法在模拟器中打开的问题
  12. Java完全自学手册pdf,flutter中文网
  13. 计算机word平均值函数公式,Excel函数公式:在Word中用公式求和、平均值你会吗?...
  14. 安卓桌面html便签,手机桌面便签
  15. python selenium某里国际站网站注册登录验证问题
  16. macOS Monterey 12.3 (21E230) 虚拟机 IOS 镜像
  17. 赛尔号对战c语言程序,赛尔号计算解析系列文章(第一期)
  18. 智慧工地 | 数字孪生楼宇施工管理平台
  19. 英文学习20180410
  20. 抖音视频二创闷声发财

热门文章

  1. Java经典入门教程!大连埃森哲java招聘信息
  2. TMS320F280049C 学习笔记15 DAC
  3. 自动化学报latex模板使用说明
  4. html标签:表格、列表、图片、文字、表单、以及h5新增特性
  5. [浅析]UE4物理系统
  6. 计算机系统的环境变量,电脑path环境变量不见了怎么恢复_教你恢复电脑path环境变量的方法...
  7. dvi转vga接口图及相关接法
  8. 网页webp转非webp的jpg gif png 图片
  9. 如何正确关闭MongoDB
  10. SpringMVC+log4j配置