百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

升级Win 10的理由:DirectX 12为什么重要

bigegpt 2024-08-30 12:51 2 浏览

如果对于大部分玩家们来说 Windows 10 系统有什么盼头,那就莫过于 DirectX 12 了。根据微软的宣传,DirectX 12 能够显著提升游戏体验,这正是玩家们最为需要的。但是大家总这么说,到底 DirectX 12 能带来些什么?

前言

我们首先得从为什么需要 DirectX 说起。

如果是在主机上开发游戏,开发者只需要一套硬件对应一个品牌(Xbox、PlayStation、任天堂),也就是说他们只需要考虑一款处理器和一款显示芯片,内存需求、输入选项和其他硬件标准都是预先决定好的。

但到了 PC 游戏开发上,问题就开始复杂了。游戏开发者需要面对无数种硬件配置,要让游戏在茫茫多的显卡、主板和各种硬件平台上完美运行可以说困难重重。这就是为什么在上一个十年里,开发者们会纷纷涌向主机平台。

主机有着性价比高、盗版率低的特点,而且开发者在编程时还能够直接访问硬件 —— 后者是关键,因为这让开发者能够榨取硬件的每一寸性能,并且可以最大程度利用主机内置的部件特性。而这,就是 DirectX 对于 PC 游戏来说如此重要的原因。

DirectX 是什么?

简单来说,DirectX 是一种由微软开发,用以和 PC 硬件“交流沟通”的软件。再说具体一些,它是一套应用程序接口 —— 也就是 API —— 的集合。DirectX 的工作和 2D 及 3D 的矢量图形渲染有关,负责 Windows 平台的视频渲染和音频播放。

目前与 DirectX 形成竞争的是 OpenGL,这是于 1992 年推出的另一个图形 API 套件。OpenGL 采用开源原则,并且得到 Khronos Group 团队的持续开发。因为 OpenGL 是跨平台 API,它并不像 DirectX 那样能得到 Windows 的原生支持。

DirectX 最初出现在 Windows 95 时代。那个时候,大多数 PC 玩家还守在老旧的 DOS 平台上。DOS 给予开发者直接访问 PC 硬件的权限,这是很大的诱惑。Windows 95 并不提供这样的能力,直到 DirectX 横空出世。

其实最开始 DirectX 并没有得到关注,因为开发者们更依赖 OpenGL,而且他们认为 DOS 环境更有效率。不过随着时间的推移,DirectX 逐渐强大起来。当开发者意识到这一点后,它的地位变得不可动摇。

要说 DirectX 真正开始战胜 OpenGL,那还是在 2002 年,也就是著名的 DirectX 9 出现的时候。Windows XP 的成功大大加速了 DirectX 的增长,时至今日这个平台已经高度稳定并且仍在全球范围内被使用。Windows 10 逐渐将成为主流,它即将带来最新的 DirectX 12。

DirectX 12 将带来什么?

在这个最新的版本发布之前,DirectX 最大的缺陷在于它始终不像主机那样,提供对硬件的底层访问。为了解决这个问题,AMD 自立山门推出了 Mantle API 套件,让开发者可以在 AMD 的产品上优化软件。

从本质上说,图形芯片已经变得和主处理器一样强大了,足以承担图形渲染之外的运算任务。AMD 的 Mantle 让开发者能够充分利用那些支持它的 Radeon 显卡的性能。从人们的反馈来看,Mantle 口碑很好,表现得也十分出色。然而就在微软推出了新版本 DirectX 解决底层的问题后,Mantle 的短命也就成了注定。

来自 Nvidia 的 Henry Moreton 是这么概括 DirectX 12 的:“DX12 重在极大提升视觉效果的丰富程度,但却能显著减少 CPU 与 API 有关的负担。过去,驱动程序和系统软件会为开发者管理内存、状态和同步。然而,对应用程序需求的理解不完全导致了效率偏低。DX12 让应用程序能够直接管理资源和状态,并执行必要的同步。结果是,高级应用程序的开发者将能够有效率地控制 GPU,充分利用上自己对游戏开发知识的精通。”

通过将更多工作分配给图形芯片,主处理器的负担就会少很多,游戏也就不会被系统后台中的各种任务所拖慢。越多的核心性能越好,意味着双核处理器会和四核处理器有明显的差距。

这一点对图形芯片来说也是一样的,双显卡当然性能要更强,我们通过 Nvidia 的 SLI 和 AMD 的交火理解了这一点。配合 DirectX 12,游戏或还将有更好的表现,因为负载现在可以被同时分配到不同的核心上了,而非像以前那样一次只能有一个核心负责。

这个改变非常重要,因为 DirectX 11 并没能完全利用上多核心的优势,一次只有一个核心在工作,其他的全都在待机。DirectX 12 发布后,单 CPU 核心和单 GPU 核心的时代终于完全落幕。

你可以做如下想象:计算机从原本的单车道时代进入了超宽八车道时代,让 CPU 能够将渲染和指令计算的工作交给 GPU。对于玩家来说,这意味着更流畅的帧率和更好的画质。

如何享受 DirectX 12?

DirectX 12 还有一个亮点是它是 Windows 10 的原生 API,而 Windows 10 现在已经被应用在了各个不同种类的设备上 —— 台式机、笔记本电脑、平板电脑、手机,甚至 Xbox One。DirectX 12 还在一定程度上向下兼容,让 PC 玩家不需要购买新的显卡也能游玩喜欢的作品。

根据微软的说法,DirectX 12 比起 DirectX 11 来,在 CPU 利用效率上能有 50% 的提升,而且在程序化指令或线程的多序列工作上也有更好的任务分配。

好消息是现在有为数不少的 PC 游戏已经做好准备迎接 DirectX 12 了,比如《奇点灰烬》、《上古卷轴 OL》、《古墓丽影:崛起》、《战争机器:终极版》和《杀手》。除此之外,《杀出重围:人类分裂》、《星际公民》、《极限竞速 6:巅峰》等即将推出的作品也会支持新的 API。

总的来说,如果游戏支持 DirectX 12,那么它就有望能够为玩家带来更好的性能表现。这样一来,开发者就需要为那些已经推出的作品进行更新,以便让它们支持 DirectX 12,但他们会不会积极响应呢?

无论是 Nvidia 还是 AMD 都已经开始了它们对 DirectX 12 的支持,所以未来毫无疑问将会是新 API 的时代。如果你还没有更新 Windows 10,DirectX 12 会是一个很好的推动力。DirectX 12 带来的变化那么大,而且微软又急于推广 Windows 10,因此它肯定是不会支持旧系统了的。

如需转载,需本站E-Mail授权.并注明“来源于威锋网”,未经授权转载,断章转载等行为,本站将追究法律责任! E-Mail: QingXing@office.feng.com

相关推荐

Java 泛型大揭秘:类型参数、通配符与最佳实践

引言在编程世界中,代码的可重用性和可维护性是至关重要的。为了实现这些目标,Java5引入了一种名为泛型(Generics)的强大功能。本文将详细介绍Java泛型的概念、优势和局限性,以及如何在...

K8s 的标签与选择器:流畅运维的秘诀

在Kubernetes的世界里,**标签(Label)和选择器(Selector)**并不是最炫酷的技术,但却是贯穿整个集群管理与运维流程的核心机制。正是它们让复杂的资源调度、查询、自动化运维变得...

哈希Hash算法:原理、应用(哈希算法 知乎)

原作者:Linux教程,原文地址:「链接」什么是哈希算法?哈希算法(HashAlgorithm),又称为散列算法或杂凑算法,是一种将任意长度的数据输入转换为固定长度输出值的数学函数。其输出结果通常被...

C#学习:基于LLM的简历评估程序(c# 简历)

前言在pocketflow的例子中看到了一个基于LLM的简历评估程序的例子,感觉还挺好玩的,为了练习一下C#,我最近使用C#重写了一个。准备不同的简历:image-20250528183949844查...

55顺位,砍41+14+3!季后赛也成得分王,难道他也是一名球星?

雷霆队最不可思议的新星:一个55号秀的疯狂逆袭!你是不是也觉得NBA最底层的55号秀,就只能当饮水机管理员?今年的55号秀阿龙·威金斯恐怕要打破你的认知了!常规赛阶段,这位二轮秀就像开了窍的天才,直接...

5分钟读懂C#字典对象(c# 字典获取值)

什么是字典对象在C#中,使用Dictionary类来管理由键值对组成的集合,这类集合被称为字典。字典最大的特点就是能够根据键来快速查找集合中的值,其键的定义不能重复,具有唯一性,相当于数组索引值,字典...

c#窗体传值(c# 跨窗体传递数据)

在WinForm编程中我们经常需要进行俩个窗体间的传值。下面我给出了两种方法,来实现传值一、在输入数据的界面中定义一个属性,供接受数据的窗体使用1、子窗体usingSystem;usingSyst...

C#入门篇章—委托(c#委托的理解)

C#委托1.委托的定义和使用委托的作用:如果要把方法作为函数来进行传递的话,就要用到委托。委托是一个类型,这个类型可以赋值一个方法的引用。C#的委托通过delegate关键字来声明。声明委托的...

C#.NET in、out、ref详解(c#.net framework)

简介在C#中,in、ref和out是用于修改方法参数传递方式的关键字,它们决定了参数是按值传递还是按引用传递,以及参数是否必须在传递前初始化。基本语义对比修饰符传递方式可读写性必须初始化调用...

C#广义表(广义表headtail)

在C#中,广义表(GeneralizedList)是一种特殊的数据结构,它是线性表的推广。广义表可以包含单个元素(称为原子),也可以包含另一个广义表(称为子表)。以下是一个简单的C#广义表示例代...

「C#.NET 拾遗补漏」04:你必须知道的反射

阅读本文大概需要3分钟。通常,反射用于动态获取对象的类型、属性和方法等信息。今天带你玩转反射,来汇总一下反射的各种常见操作,捡漏看看有没有你不知道的。获取类型的成员Type类的GetMembe...

C#启动外部程序的问题(c#怎么启动)

IT&OT的深度融合是智能制造的基石。本公众号将聚焦于PLC编程与上位机开发。除理论知识外,也会结合我们团队在开发过程中遇到的具体问题介绍一些项目经验。在使用C#开发上位机时,有时会需要启动外部的一些...

全网最狠C#面试拷问:这20道题没答出来,别说你懂.NET!

在竞争激烈的C#开发岗位求职过程中,面试是必经的一道关卡。而一场高质量的面试,不仅能筛选出真正掌握C#和.NET技术精髓的人才,也能让求职者对自身技术水平有更清晰的认知。今天,就为大家精心准备了20道...

C#匿名方法(c#匿名方法与匿名类)

C#中的匿名方法是一种没有名称只有主体的方法,它提供了一种传递代码块作为委托参数的技术。以下是关于C#匿名方法的一些重要特点和用法:特点省略参数列表:使用匿名方法可省略参数列表,这意味着匿名方法...

C# Windows窗体(.Net Framework)知识总结

Windows窗体可大致分为Form窗体和MDI窗体,Form窗体没什么好细说的,知识点总结都在思维导图里面了,下文将围绕MDI窗体来讲述。MDI(MultipleDocumentInterfac...