DirectX 11能解释下是啥意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DirectX 11能解释下是啥意思?相关的知识,希望对你有一定的参考价值。

不要复制答案,通俗易懂就行了

DirectX并不是一个单纯的图形API,它是由微软公司开发的用途广泛的API,它包含有Direct Graphics(Direct 3D+Direct Draw)、Direct Input、Direct Play、Direct Sound、Direct Show、Direct Setup、Direct Media Objects等多个组件,它提供了一整套的多媒体接口方案。只是其在3D图形方面的优秀表现,让它的其它方面显得暗淡无光。DirectX开发之初是为了弥补Windows 3.1系统对图形、声音处理能力的不足,而今已发展成为对整个多媒体系统的各个方面都有决定性影响的接口。

DirectX 1.0
第一代的DirectX很不成功,推出时众多的硬件均不支持,当时基本都采用专业图形API-OpenGL,缺乏硬件的支持成了其流行的最大障碍。
DirectX 1.0版本是第一个可以直接对硬件信息进行读取的程序。它提供了更为直接的读取图形硬件的性能(比如:显示卡上的块移动功能)以及基本的声音和输入设备功能(函数),使开发的游戏能实现对二维(2D)图像进行加速。这时候的DirectX不包括现在所有的3D功能,还处于一个初级阶段。

DirectX 2.0
DirectX 2.0在二维图形方面做了些改进,增加了一些动态效果,采用了Direct 3D的技术。这样DirectX 2.0与DirectX 1.0有了相当大的不同。在DirectX 2.0中,采用了“平滑模拟和RGB模拟”两种模拟方式对三维(3D)图像进行加速计算的。DirectX 2.0同时也采用了更加友好的用户设置程序并更正了应用程序接口的许多问题。从DirectX 2.0开始,整个DirectX的设计架构雏形就已基本完成。

DirectX 3.0
DirectX 3.0的推出是在1997年最后一个版本的Windows95发布后不久,此时3D游戏开始深入人心,DirectX也逐渐得到软硬件厂商的认可。97年时应用程序接口标准共有三个,分别是专业的OpenGL接口,微软的DirectX D接口和3DFX公司的Glide接口。而那时的3DFX公司是最为强大的显卡制造商,它的Glide接口自然也受到最广泛的应用,但随着3DFX公司的没落,Voodoo显卡的衰败,Glide接口才逐渐消失了。

DirectX 3.0是DirectX 2.0的简单升级版,它对DirectX 2.0的改动并不多。包括对DirectSound(针对3D声音功能)和DirectPlay(针对游戏/网络)的一些修改和升级。DirectX 3.0集成了较简单的3D效果,还不是很成熟。

DirectX 5.0
微软公司并没有推出DirectX 4.0,而是直接推出了DirectX 5.0。此版本对Direct3D做出了很大的改动,加入了雾化效果、Alpha混合等3D特效,使3D游戏中的空间感和真实感得以增强,还加入了S3的纹理压缩技术。
同时,DirectX 5.0在其它各组件方面也有加强,在声卡、游戏控制器方面均做了改进,支持了更多的设备。因此,DirectX发展到DirectX 5.0才真正走向了成熟。此时的DirectX性能完全不逊色于其它3D API,而且大有后来居上之势。

DirectX 6.0
DirectX 6.0推出时,其最大的竞争对手之一Glide,已逐步走向了没落,而DirectX则得到了大多数厂商的认可。DirectX 6.0中加入了双线性过滤、三线性过滤等优化3D图像质量的技术,游戏中的3D技术逐渐走入成熟阶段。

DirectX 7.0
DirectX 7.0最大的特色就是支持T&L,中文名称是“坐标转换和光源”。3D游戏中的任何一个物体都有一个坐标,当此物体运动时,它的坐标发生变化,这指的就是坐标转换;3D游戏中除了场景+物体还需要灯光,没有灯光就没有3D物体的表现,无论是实时3D游戏还是3D影像渲染,加上灯光的3D渲染是最消耗资源的。虽然OpenGL中已有相关技术,但此前从未在民用级硬件中出现。

在T&L问世之前,位置转换和灯光都需要CPU来计算,CPU速度越快,游戏表现越流畅。使用了T&L功能后,这两种效果的计算用显示卡的GPU来计算,这样就可以把CPU从繁忙的劳动中解脱出来。换句话说,拥有T&L显示卡,使用DirectX 7.0,即使没有高速的CPU,同样能流畅的跑3D游戏。

DirectX 8.0
DirectX 8.0的推出引发了一场显卡革命,它首次引入了“像素渲染”概念,同时具备像素渲染引擎(Pixel Shader)与顶点渲染引擎(Vertex Shader),反映在特效上就是动态光影效果。同硬件T&L仅仅实现的固定光影转换相比,VS和PS单元的灵活性更大,它使GPU真正成为了可编程的处理器。这意味着程序员可通过它们实现3D场景构建的难度大大降低。通过VS和PS的渲染,可以很容易的宁造出真实的水面动态波纹光影效果。此时DirectX的权威地位终于建成。

DirectX 9.0
2002年底,微软发布DirectX9.0。DirectX 9中PS单元的渲染精度已达到浮点精度,传统的硬件T&L单元也被取消。全新的VertexShader(顶点着色引擎)编程将比以前复杂得多,新的VertexShader标准增加了流程控制,更多的常量,每个程序的着色指令增加到了1024条。

PS 2.0具备完全可编程的架构,能对纹理效果即时演算、动态纹理贴图,还不占用显存,理论上对材质贴图的分辨率的精度提高无限多;另外PS1.4只能支持28个硬件指令,同时操作6个材质,而PS2.0却可以支持160个硬件指令,同时操作16个材质数量,新的高精度浮点数据规格可以使用多重纹理贴图,可操作的指令数可以任意长,电影级别的显示效果轻而易举的实现。

VS 2.0通过增加Vertex程序的灵活性,显著的提高了老版本(DirectX8)的VS性能,新的控制指令,可以用通用的程序代替以前专用的单独着色程序,效率提高许多倍;增加循环操作指令,减少工作时间,提高处理效率;扩展着色指令个数,从128个提升到256个。

增加对浮点数据的处理功能,以前只能对整数进行处理,这样提高渲染精度,使最终处理的色彩格式达到电影级别。突破了以前限制PC图形图象质量在数学上的精度障碍,它的每条渲染流水线都升级为128位浮点颜色,让游戏程序设计师们更容易更轻松的创造出更漂亮的效果,让程序员编程更容易。

显卡所支持的DirectX版本已成为评价显卡性能的标准,从显卡支持什么版本的DirectX,用户就可以分辨出显卡的性能高低,从而选择出适合于自己的显卡产品
参考技术A DirectX 是微软公司创建的多媒体编程接口DirectX 11是windows7 下的单击开始菜单,运行,输入dxdiag回车。 参考技术B DirectX 是一种应用程序接口,主要用来加强3D图形和声音效果。由4个部分组成。 显示部分,声音部分,输入部分,网络部分。 DirectX 11是微软最新出的一种接口,能更好的支持上面所说的功能。需要更详细的 请留言 参考技术C 2009年10月22日,微软公司正式发布Windows 7,DirectX 11集成在Windows 7 中同步登场,2009年9月22日ATI发布了支持DX11的基于Cypress核心的HD5800系列显卡,而NVIDIA才刚造出支持DX11的GT300芯片的样品。
  虽然硬件已经支持DirectX11,但支持DirectX11的游戏2010年才会大量出现。
  我们知道,DX10.1将是DX10的最后一次升级,而且是非关键性的,接下来微软就会直接迈入DX11。根据此前的报道,DX11的主要目标仍是降低游戏开发难度和成本,同时更有效地发挥新硬件的能力、提高物理效果和游戏AI、增强画面细节复杂度、针对多核心处理器进行全面优化。
  回顾DirectX历史,从1995年Windows 95里的DX1.0开始,一直保持着很快的升级速度,只有DX9系列的几个版本维持了四年之久。用两年的时间从DX10更新到DX11,其实也不算快。
  2009年1月9日星期五,微软将面向公众发布Windows 7客户端Beta 1测试版。而此前一天,即1月8日,微软将率先发布Windows 7服务器版本的Beta 1测试版。
  在微软发布的Windows 7 Beta版本中,一些已经安装使用的用户的发现了DirectX 11已经包含其中了。DirectX 11作为3D图形接口,不仅支持未来的DX11硬件,还向下兼容当前的DirectX 10和10.1硬件。DirectX 11增加了新的计算shader技术,可以允许GPU从事更多的通用计算工作,而不仅仅是3D运算,这可以鼓励开发人员更好地将GPU作为并行处理器使用。 [编辑本段]特点  DX11新增了计算着色器(Compute Shader)代码示例,在今年的NVISION大会上,微软就透漏了这点,并通过SIGGRAPH以及GameFest 2008大会上放出的幻灯片,我们可以进行一些深入的研究。此外,DX11特性的提前放出,对于目前DX10以及DX10.1硬件用户而言也大有裨益,因为AMD和NVIDIA可以照此提前开发适当的驱动支持。
  DirectX 11的诸多特性似乎暗示我们,DirectX 11被迅速采用的时机已经成熟,特别是微软的Windows 7发布之后,这一趋势将会势不可挡。而如今,HLSL(High Level Shading Language,高级渲染语言)已经完全成熟,这势必会让DX11在众游戏开发者们眼里变得更加具有吸引力,而且越来越多的人开始认识到DX10其实就是DX11的子集,这对于DirectX 11将来被快速采用也会起到促进作用。另外,DX11可以让平行编程变得更加容易,其独有的特性也会促进开发者们大胆的、迅速采纳这种API。DirectX 11同时可以兼容Vista操作系统,所以用户不用担心不能升级,而Windows 7与生俱来的魅力在很大程度上也会促使Windows XP用户们做出升级的决定,也就是说,对于开发者们而言,市场上将会有足够大的可运行DX11的系统群体。
  微软曾许诺DirectX 10可以带来革命性的视觉体验以及渲染技术,但结果却是仁者见仁,不过可以肯定的是,DirectX 11可能最终将会履行这一承诺。虽然我们现在不可能马上就看到DirectX 11独有的特性所带来的效果,但是这一新版API的普及将会对刺激适时3D绘图技术不断提升大有裨益。
  从DirectX 6到DirectX 9,微软一直在有条不紊的使他们的编程API从一种固定的功能传播介质以及动态的数据结构向一种丰满的、可编程的、可进行绘图硬件深控的环境演变。从DX9到DX10的演变可以说是一种升华:DX9的可编程性得到了进一步扩展和延伸,并在新一代硬件的作用下变得更具深度和弹性。此外,微软还通过各种手段提升了DX10的稳定性以及灵活性。但是,DirectX 11的演变过程则有很多不同。
  为了最大限度的提升可编程性,DX11宁可丢掉一些原有的结构效度。微软将DirectX 11构建成DirectX 10/10.1的精确父集,这让DirectX 11无形中新增了很多奇妙的潜力。特别是,DX10代码将会变成可以选择不去执行某些先进特性的DX11代码,而反过来,DX11又可以在所有同等水平的硬件上运行。当然了,对于DX10而言,并不是所有的DX11特性都是可用的,但是这却意味着开发者可在采用DX11的情况下同时针对DX10和DX11硬件进行开发,而不用考虑两者完全分开对待:因为两者是相同的,只不过,一个是另一个的子集功能而已。但是,如果应用某些DX11独有特效(比如说tessellator或者compute shader)时,区分代码路径是非常必要的,但这完全属于从DX10向DX11过渡过程中的益处所在。 [编辑本段]DirectX 11 新技术预览  1,Direct3D11渲染管线:
   Direct3D11管线看上去,DirectX 11比DirectX 10更酷。DirectX 11的很多提升意味着更高的特性性能,而这些特性很少能在DX10中看到。DirectX 11和DirectX 10两者最大的不同之处在于管线,可以说DirectX 11的渲染管线标志着绘图硬件以及软件功能革命性一步。DirectX 11加入了对Tessellation(镶嵌)的支持。Tessellation 由外壳着色器(Hull Shader)、镶嵌单元(tessellator)以及域着色器(Domain Shader)组成。同时还加入了计算着色器(Compute Shader),计算着色器与DX10中引入的GS不同,它并不是渲染管线的一部分,CS也是DirectX 11的重要改进之一,可以很大程度上协助开发人员弥补现实与虚幻之间的差别。
  2,Tessellation镶嵌技术:
  在此之前,关于DirectX 11的报道可谓铺天盖地。事实上,自R600发布时,DirectX 11这个字眼才开始越来越多的出现在网络上。尽管R6xx和R7xx硬件都具有tessellator单元,但是由于tessellator属于专有实现方案(proprietary implementation),所以R6xx和R7xx硬件是不能直接兼容DirectX 11,更何况DirectX 11采用了极其精密老练的设置过程。事实上,DX11 tessellator单元本身不具备可编程性,DX11向tessellator (TS)输入或者从中输出的过程是通过两个传统的管线阶段完成的:Hull Shader (HS,外壳着色器)和Domain Shader (DS,域着色器)。
  tessellator可以把一些较大的图元(primitive)分成很多更小的图元,并将这些小图元组合到一起,形成一种有序的几何图形,这种几何图形更复杂,当然也更接近现实。这个过程也被称作细分曲面(Subdivision Surfaces)。举例来说,tessellator可以让一个立方体,通过处理看起来像是个球形,这样的话无疑节省了空间。此外,图形的质量、性能以及可控性也达到了一定的促进。
  Hull Shader负责接收一种由全四边形网格(quad mash)计算得到的图元数据(称作patches),并计算控制点(control points)的各种变换以及输入的图元各个边的镶嵌配置(tessellation factors),从而进行镶嵌。其中Control points用来定义想要得到的图形(比如说一个曲面或者其他)的图形参数。如果您经常用Photoshop绘图软件的话,不妨把Control points理解为PS的钢笔工具:用平面代替线的贝塞尔曲线功能。Hull Shader采用control points来决定如何安排tessellator处理数据,利用Tessellator生成大批量的新的图元,然后将这些图元以及控制点传送给Domain Shader,Domain Shader将这些数据计算转换成3D处理中的顶点,最后GPU生成曲线以及多边形。
  3,多线程的支持:
   DX11多线程处理由于DX11所新增的特性甚至可以应用到DX10硬件中,所以我们对于DX11的快速应用都非常期待和乐观。DX11特性还包括很重要一点:支持多线程(multi-threading)。没错,无论是DX10还是DX11,所有的色彩信息最终都将被光栅化并显示在电脑显示屏上(无论是通过线性的方式还是同步的),但是DX11新增了对多线程技术的支持,得益于此,应用程序可以同步创造有用资源或者管理状态,并从所有专用线程中发送提取命令,这样做无疑效率更高。DX11的这种多线程技术可能并不能加速绘图的子系统(特别是当我们的GPU资源受限时),但是这样却可以提升线程启动游戏的效率,并且可以利用台式CPU核心数量不断提高所带来的潜力。
  对于场景中的人像和三个镜像,DX11会启动四个单独线程进行并行处理,效率自然要比现在依次进行的做法高很多。
  搭载8颗以及16颗逻辑核心的CPU系统已经离我们越来越近,现在游戏开发商们也该赶紧行动起来了,是时候解决有些游戏在双核心系统中运行缓慢的问题了。但是开发一款能够很大程度上促进双核以上系统普及的游戏,所能够获得的利润以及需要的付出目前来讲还很不乐观,所以这一进程进展缓慢。对于大多数游戏而言,充分利用四核心以及超过四核心的多线程优势还非常困难。尽管如此,通过多线程技术让简单的平行运算资源产生并显示出来,确实为采用平行运算代码的游戏提供了走红的机会,这些游戏代码也可以以单线程编码的方式存在。由于DX11系统中并不是采用一条线程处理所有DX state change以及draw call(或者说大量同步线程共同负责某一任务)的方式,所以游戏开发者可以很自然的创造出线程处理某个场景的某一类或者某一群的客体对象,并为将来所有客体对象或者实体为各自的线程处理打下基础(如果逻辑核心最终达到数百颗之后,这种线程处理方式对于提取硬件性能尤为重要)。
  此外,DX10硬件也能够在运行DX11游戏时支持多线程,微软的这一计划相当令人兴奋,不过值得一提的是,AMD以及NVIDIA必须为各自的DX10硬件开发出相应的驱动软件才能达到这一效果(因为如果没有相应的驱动支持的话,DX10硬件即便可以运行DX11游戏,对于玩家而言并不会看到真正应有的效果)。当然了,我们希望NVIDIA,特别是AMD(因为他同时也是一家可以生产多核心CPU的厂商)能够对此感兴趣。而且,如果A/N这么做到话,无疑会为游戏开发商们开发DX11游戏提供诱因,即便是A/N的DX11硬件还在襁褓之中。
  4,计算着色器Compute Shader:
  很多游戏开发者都对DX11新增的Compute Shader(通常简称为CS)特性啧啧称赞。CS的这一渲染管线能够进行更多的通用目的运算。我们既能在某种可以用来被执行数据的操作中看到这种特性,又能在某种可以用来操作的数据中看到这种特性。
  在DirectX11以及CS的帮助下,游戏开发者便可以使用更为复杂的数据结构,并在这些数据结构中运行更多的通用算法。与其他完整的可编程的DX10和DX11管线阶段一样,CS将会共享一套物质资源(也就是着色处理器)。
  相应的硬件需要在运行CS代码时更灵活些,这些CS代码必须支持随机读写、不规则列阵(而不是简单的流体或者固定大小的2D列阵)、多重输出、可根据程序员的需要直接调用个别或多线程的应用、32k大小的共享寄存空间和线程组管理系统、原子数据指令集、同步建构以及可执行无序IO运算的能力。
  与此同时,CS也将会随之失去一些特性。因为单个线程已经不再被看成是一个像素,所以线程将会丧失几何集合功能。这就意味着,尽管CS程序依然可以利用纹理取样功能,但是自动三线LOD过滤计算将会丧失自动功能(LOD必须被指定)。此外,一些并不重要的普通数据的深度剔除(depth culling)、反锯齿(anti-aliasing)、alpha混合(alpha blending)以及其他运算不能在一个CS程序中被执行。
  除了某些特殊应用的渲染,游戏开发者可能同时也希望做一些诸如IK(inverse kinematics,反向运动学)、物理、人工智能以及其他在GPU上执行的传统的CPU任务之类的运算。用CS算法在GPU上执行这些数据意味着这些数据将会更快的被渲染,而且一些算法可能在GPU上的执行速度更快。如果某些总是产生同样结果的算法既可以出现在CPU上又可以出现在GPU上的话,诸如AI以及物理等运算甚至可以同时在CPU和GPU上运行(这种运算实际上也可以代替带宽)。
  即便是这些运算代码在相同的硬件(CPU或者GPU)上运行,PS以及CS代码的执行也是两个截然不同的过程,这主要取决于被执行的算法。有趣的是,暴露数据以及柱状数据经常被用作HDR渲染。用PS代码计算这些数据的话就需要几条通道和几种技巧,以便提取所有像素,从而集中或者平分这些数据。尽管共享数据将会或多或少的减缓处理速度,但是共享数据的方式要比在多通道中计算速度更快,而且这样可以使CS成为这些算法的理想处理阶段。
  5,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,依旧是以降低编程的难度和复杂为目的。
  为了解决Shader灵活性与弹性不足的问题,微软在HLSL5.0中带来解决之道。HLSL5.0提出shader子程序的概念,即允许程序员将各种小段、简单或为个别需要而特制的shader程序链接起来,再根据实际需要动态调用,这样既能够提高硬件兼容性,同时减少“巨型shader”对寄存器空间的占用,有效提升性能。
  6,改进的纹理压缩:
   BC6纹理压缩精细的纹理对视觉效果的增益是显而易见的。目前的3D游戏越来越倾向于使用更大、更为精细的纹理,但是过大的纹理严重占用显存和带宽。由于目前纹理压缩仍然不支持HDR图像,因此DirectX 11提出了更为出色的纹理压缩算法——BC6和BC7。BC6是为HDR图像设计的压缩算法,压缩比为6∶1;而BC7是为低动态范围纹理设计的压缩模式,压缩比为3∶1。两种压缩算法在高压缩比下画质损失更少,效果更出色。
  这是一幅对HDR文件的压缩示意图,BC6的压缩相对于原图来说,仅仅损失了极小的画质,却获得了非常出色的效果。
  纹理质量对画面效果起着至关重要的作用。比如我们运行3D游戏时,画面内同样一个物体,观察距离较远时,纹理锐利而清晰,但当你拉近视角,近距离细看时,纹理就非常粗糙了。更不用说在某些游戏中还有类似放大镜、望远镜等道具,启用这些道具后,只能看到更为粗糙和不真实的纹理。出现这种问题,一方面是纹理压缩率损失严重,细腻的纹理压缩存放后,损失大量细节;另一方面是大纹理难以保证保证游戏运行速度和软件体积,如果在游戏中大面积采用分辨率高达4000dpi的纹理贴图,那么显卡的运算资源和显存容量很快就会告罄。因此,DirectX 11最快速和最直观的改变就是再次改进了纹理的压缩算法,将纹理体积和纹理质量控制在一个相当优秀的范围之内。

DirectX 12和DirectX 11选哪个,有什么区别

如下:

directx 12和directx 11比较为:directx 12能100% API支持心渲染引擎、提高了多线程效率、软件平台更新。

一、核心渲染引擎支持

1、directx 12:directx 12对于核心渲染引擎是100% API支持。

2、directx 11:directx 11对于核心渲染引擎仅仅是特性集上的支持。

二、线程效率

1、directx 12:directx 12大大提高了多线程效率,可以充分发挥多线程硬件的潜力。

2、directx 11:directx 11受CPU性能的严重制约,主要是因为不能有效利用多核心。

三、软件平台

1、directx 12:directx 12的软件平台为Windows 7。软件平台更旧。

2、directx 11:directx 11的软件平台为Windows 10。软件平台更新。

参考技术A 当然是dx12.两台分别运行DirectX11和DirectX12的机器运行着相同城市场景的游戏演算Demo,可以看到,随着画面复杂度和细节的提升运行DX11的机器帧数越来越少,渐渐静止;而运行DX12版本的机器始终能够流畅运行,不管城市规模的扩大和细节的提本回答被提问者采纳

以上是关于DirectX 11能解释下是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

Directx版本是啥意思?

dx12环境是啥意思

使用 Direct 3D (C++) 的 DIrectX 11 2D 游戏引擎

巫师3directx11是啥

谁能解释一下“?currentPosition+1 : currentPosition-1;”是啥意思[复制]

SurfaceTexture.getTransformMatrix的返回值是啥意思,谁能解释一下?