MCPLive > 杂志文章 > DirectX 11技术面面看

DirectX 11技术面面看

2009-02-06再来一次《微型计算机》2009年1月下

2009年里,令人期待的显示技术革新可能就是DirectX 11。众所周知,DirectX 10/10.1采用了统一渲染架构,彻底抛弃了不够智能的顶点渲染管线和像素渲染管线,同时加入了几何处理单元,让显卡可以更为自由的生成数据。尽管DirectX 10/10.1做出如此多的改进,但CPU的计算能力依旧没有被释放出来,仍被大量多边形数据淹没;在面对SLI和CrossFireX多卡互联技术的火热大潮,DirectX也不能提供API级别的多线程处理;在画质改善方面,如《Crysis》等游戏使用了更为精细、更为巨大的纹理文件,但依靠DirectX 10却无法对纹理做到更好的压缩。可以说,DirectX 10/
10.1的压缩算法损失比较严重。总的来看,DirectX 10/10.1更像革命的第一步,更多的功能可以从
DirectX 10/10.1改革的方向中依稀猜测出来。从DirectX 7时代一直走到DirectX 10/10.1时代,我们可以发现,解放CPU计算压力,让GPU具备更高的自由度、更为强大的通用计算功能和更为紧密贴合硬件发展的需求,是Di rectX的发展方向。在DirectX 11上,这种趋势更为明显。

DirectX 11提前预览

在介绍DirectX 11前,我们不妨先来了解一下DirectX 11为我们带来的一些新理念和技术更新。

●DirectX 11是DirectX 10和DirectX 10.1的超集。也就是说DirectX 11是基于DirectX 10/10.1开发的技术,并在此基础上做出了扩展和改进。

●DirectX 11的开发重点是可扩展性和性能优化,并且着力扩大GPU的应用范围,以带给用户更为出色的应用体验。

●DirectX 11可以通过运行升级包安装在Windows Vista以及以后的Windows 7操作系统上。

以上是DirectX 11的主要设计理念,下面是较DirectX 10/10.1而言,DirectX 11主要技术改进:

●Shader Model 5.0
●改进多线程处理
●对渲染管线的改进,包括新增“tessellation(镶嵌)”处理阶段以及Hull Shader、Domain
Shader等其他改进。
●改进纹理压缩
●Compute Shader

Shader Model 5.0

DirectX 10的Shader Model 4.0(Shader Model以下简称“SM”)带来了整数运算和位运算的功能,DirectX 10.1的SM 4.1加入了对MSAA的直接采样和控制。从目前的消息来看,DirectX 11包含的SM 5.0,采用面向对象的概念,并且完全可以支持双精度数据。随着SM 5.0的发布,微软也会将HLSL语言更新至新版本,其中包含了诸如动态着色、动态分支和更多的对象等。总之,面向专业开发人员的SM 5.0,依旧是以降低编程的难度和复杂为目的。

对多线程处理的改进

目前桌面多核心处理器已经被广泛使用,特别是双核处理器。对系统程序的调用而言,多线程虽然不够成熟,但起码能使用,且正处于持续的发展中。但如果告诉你DirectX 10.1依旧不能支持多线程,你相信吗?

等一下!不是有SLI和CrossFireX吗?没错,但这些技术基于一个虚拟的GPU。也就是说,无论有多少物理GPU,到后反映在DirectX中只能有一个GPU。采用一个虚拟GPU和DirectX沟通,然后在显卡的驱动程序中将任务分派下去。由于实际上只有一个GPU(虚拟的),因此只能设置一个命令缓冲区,必须得考虑究竟哪一个物理GPU计算出的结果可以存放在缓冲区内。另外一个问题是,目前显卡厂商正在向多核心处理改进,代表产品有Radeon HD 4870X2和GeForce 9800 GX2,以及即将推出的双核GT200。因此多GPU设计很可能是未来高端显卡的一个发展趋势。可以看出,相对于大体积芯片来说,小体积芯片利于控制成本和提高性能,在DirectX 11中加入多线程处理是非常恰当的。

为了加强多线程处理能力,DirectX 11一改以往Direct 3D同步运行的对象和Device,使其可以被异步执行的API所调用,并且程序员能够准确地控制程序的运行时间。为了保证多线程的运行,
DirectX 11将目前单一执行的Direct 3D设备分为三个独立的接口:设备(Device)、立即执行范畴(Immediate Context)和延后执行范畴(Deferred Context)。应用DirectX 11后,由于API本身支持多线程处理,NVIDIA和ATI应该要在驱动程序上做出一定改进,以达到更有效率、更紧密结合API的多线程运行方式。同时,CPU还可以利用显卡的多线程执行加快DirectX的处理,减少CPU的响应时间,提升整体系统的性能。值得注意的是,有消息指出,目前支持DirectX 10/10.1的显卡,也能利用到多线程带来的性能增益,不过关键还是在于相关驱动是否能很好优化。

本文导航

分享到:

用户评论

共有评论(1)

  • 2009.02.06 19:08
    1楼

    发展太快了,我刚上大学时家里电脑升级换显卡,那时我记得显卡是支持DirectX9.0的,一个假期我都在玩当时来说主流的3D游戏。现在我那台老爷机,已经退休了。

    (0) (0) 回复

用户名:

密码: