转自: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. 背包问题概述(Lintcode- 562.Backpack IV问题解决)
  2. 成功解决 keras\callbacks.py:999: UserWarning: `epsilon` argument is deprecated and will be removed, use
  3. 打印格式设置(SPAD)
  4. powermockito教程_Mockito与PowerMock的使用基础教程
  5. 个人管理 - Learn More,Study Less!
  6. Matlab Tricks(十五) —— 圆的正确画法
  7. bzoj 3375: [Usaco2004 Mar]Paranoid Cows 发疯的奶牛(二分)
  8. 网络不良视频内容识别技术初探
  9. 【年终总结】我的2015
  10. SharePoint 2013 图文开发系列之列表定义高级篇
  11. 敷衍没有出路,iPhone14同时被热捧和唾弃
  12. 韩式时尚大片《九月风》(出镜:马晓辉/徐嘉依)
  13. 346雷达有多少tr组件_S波段+C波段,我军346舰载雷达独具匠心,堪称神来之笔!...
  14. tesstwo深度优化_十年磨一剑:自主可控国产微观交通仿真软件TESS NG研发之路
  15. 《“桥板灯”的来历》——游城“明经胡氏”
  16. 史上最详细log4j使用文档
  17. Python开发 之 Python3读写Excel文件(较全)
  18. 福特sync恢复出厂设置_急急急啊!福特sync服务中心如何注册
  19. Python解释器的下载与安装教程(Win11)
  20. *.pvr.ccz文件还原成png格式

热门文章

  1. 【linux常用命令】
  2. 8.4 内存映射文件
  3. 3-OpenCL快速入门教程
  4. 广度优先搜索算法和深度优先搜索算法——关于路径搜索的问题解决
  5. 带你走近微软最“动听”的程序媛 | 女神节特辑
  6. 熬夜肝了万字Android View 知识体系
  7. python微博爬虫实战_32个Python爬虫实战项目,满足你的项目荒,附赠资料
  8. 面向对象和面向过程~~编程思想
  9. 报告解读下载 | 11月《中国数据库行业分析报告》发布,精彩抢先看
  10. 组合数学_排列与组合