Anonim

让我们面对现实:DirectX 11和OpenGL有点陈旧。 DirectX 11于2009年随Windows 7一起引入,一年后又推出了OpenGL 4.0。 在软件时代,这些技术已经很古老了,而当这些图形API发布时,它们当前正在运行的硬件甚至还没有出现在绘图板上。 鉴于这种明显的脱节,该行业如何与时俱进? 好吧,我们将看一下不久的将来,然后开始,首先让我们解释一下什么是API,以及它为游戏提供的功能。

什么是API?

API或 应用程序编程接口 是用于构建软件的一组协议和工具。 图形API实际上只是一种专用API,旨在简化3D图形的生成。 图形API确实使构建3D图像更加容易,但是它们还允许您告诉API做某事(例如绘制矩形),然后让API与硬件进行通信以了解如何完成此任务。 这就是为什么这么多带有专用硬件的不同GPU都可以运行相同游戏的主要原因。 如果没有API,则必须以不同的方式编写相同的游戏才能与每组特定的硬件进行通信。 这将严重限制硬件制造,并会大大增加构建游戏的成本,而该成本最终会转嫁给最终用户。

为了使上面的解释更容易理解,我将使用一个类比:将API视为建筑工地经理。 他或她的工作是采纳建筑师的想法并将其分解,安排工作人员需要在何时何地进行安排,并确保每个人都在同一页上完成任务。

图1:API工作方式的图形表示

当前使用的图形API

现在我们了解了图形API的工作,让我们仔细看一下当前的阵容。 当今市场上的主要参与者是Microsoft的DirectX,该DirectX早在1995年就已推出。自发布以来已进行了多次更新,并且已包含在Microsoft的Windows操作系统中。 DirectX是几乎所有为PC发布的游戏都将支持的图形API。 实际上,它是如此普遍,以至于它确实是当今PC游戏的标准。 DirectX是Windows和Microsoft产品所独有的,不幸的是,它使它成为一个非常封闭的系统。 接下来的是OpenGL,这是唯一主要的开源图形API。 OpenGL于1992年发布,具有多种平台,这意味着它可与包括Windows,Linux和Mac OS在内的多种操作系统一起使用。 最后,我们拥有最新的图形API Mantle。 Mantle是由AMD和Dice合作于2013年开发的。 Mantle在Windows上可用,并且仅适用于AMD GPU。

图2:比较DirectX 12与DirectX 11
图片来源; 图片来源:英特尔

DirectX 12

DirectX 12将于今年秋天与Windows 10一起发布,并且正在吹捧许多新的改进。 最大的改进之一是更好的多线程支持。 更多工作分散在CPU的多个内核上,从而实现了更好,更高效的CPU利用率。 在很多情况下,DirectX 11只会使CPU的一个核心完全用尽,而其他核心几乎处于空闲状态。 DirectX 12承诺将这种工作负载更均匀地分布在CPU内核上,从而为游戏提供更多的CPU功能。 DirectX 12承诺的下一个重大改进是能够处理更多绘图调用。 每当游戏引擎想要在屏幕上绘制内容时,都会进行绘制调用。 通常,对CPU进行大量绘制调用的要求非常高。 DirectX 12应该能够处理多达600, 000个绘制调用。 为了更好地理解这一点,DirectX 9只能处理6, 000个绘图调用,或DirectX 12只能处理的1/100。

多年来,已经可以在SLI / Crossfire模式下运行多个GPU。 但是,最大的限制之一是卡中内置的VRAM不能堆叠在一起以形成一个大的连续池。 例如,如果您有两个具有2GB VRAM的GPU,您实际上仍然只有2GB VRAM,因为每张卡必须存储相同的信息。 DirectX 12希望通过使用AFR或备用帧渲染来解决此问题。 现在,GPU不再渲染每个帧的每个GPU部分,而是每个渲染一个完整的帧。 这将允许独立使用每张卡上的VRAM,并希望允许VRAM量较小的卡在更长的时间内可用于游戏。 DirectX 12中应该包含许多其他新功能,可以比以往更进一步地推动游戏图形。 但是,对于这些新功能,Microsoft仍然保持沉默。 希望随着API版本的临近,我们将对它们有更多的了解。

图3:使用多核CPU时,减少了DirectX 12 API开销。
图片来源; 图片来源:nVidia GeForce

武尔坎

正如在GDC 2015上宣布的那样,对Vulkan的了解不如对DirectX 12的了解。我们所知道的是,OpenGL的制造商Khronos Group取而代之的是glNext,以支持Vulkan。 Vulkan似乎源自Mantle,我在本文前面已经提到过。 此外,看起来AMD与Khronos Group合作,将Mantle的最佳部件推向Vulkan。 Vulkan应该具有DirectX 12的许多相同优点,但它并不局限于Windows之类的单一平台。 相反,它将在许多不同的平台上可用,包括Linux甚至移动设备。 与DirectX不同,用于Windows和Linux的Vulkan驱动程序将是完全开源的。 Vulkan将改进多线程,因此可以通过将工作负载分散到多个CPU内核来更好地利用当今可用的CPU功能。 如前所述,减少CPU的负担将使GPU不再像现在那样容易地成为瓶颈。 这应该在游戏过程中提供相当可观的帧率提升。 Valve最近宣布了Source 2,它将是第一个完全支持Vulkan的新游戏引擎,尽管我相信不久的将来还会发布更多。 Dota 2是一款以CPU密集型游戏而著称的游戏,它显示了在Source 2中使用新的Vulkan API在CPU上使用英特尔集成显卡运行的情况。 在DirectX 11下,这当然是不希望的,但是使用Vulkan时,游戏似乎始终保持合理的帧速率。 Oxide游戏开发商Dan Baker甚至说“直到GPU制造商齐心协力,使GPU的速度比现在快十倍,我们才能最大限度地利用CPU”。 对于运行速度较慢的CPU或当前具有大量GPU功能的人们来说,这是个好消息,因为这意味着在同一组硬件上可以获得更好的性能。

图4:该图显示了Vulkan的优势(减少了GPU的瓶颈)。
图片来源; 图片来源:Khronos

这对游戏的未来意味着什么?

好吧,很长一段时间以来,GPU的增长速度已经快于CPU的增长速度。 五年前,英特尔甚至宣称某些GPU的速度是其自己CPU的14倍。 这些测试是使用nVidia GTX 280与i7 960 Intel CPU(现已被认为相对过时的硬件)完成的。 nVidia GTX Titan X(甚至nVidia GTX 980)与当前的主流CPU强国Intel i7-4790k CPU之间的差距应该更大。 我要说的是,由于CPU的出现,我们开始看到越来越多的游戏性能下降。 询问具有高刷新率监视器的人,在某些游戏中,使用当前CPU维持100 + fps的难度有多大。 坦白地说,没有这些新的API以及它们更有效地利用CPU功能的能力,只会变得更加困难。 这些新API的引入对于大多数人而言可能意味着性能上的巨大提升。 此外,它还允许开发人员构建比我们现在更多的CPU密集型游戏。 例如,想象一下像《刺客信条》这样的游戏,一次在屏幕上有成千上万的NPC,当您漫游城市时,它们彼此之间以及与您的角色互动。 或像《星际公民》这样的游戏,您需要非常非常强大的CPU来获得任何稳定和可接受的帧速率,可能在不久的将来最多需要一个平均CPU和一个强大的GPU来保持稳定的60fps。

最终,这是成为游戏玩家的激动人心的时刻。 当这些新的图形API发布时,我们可能会看到很长时间以来游戏技术的最大飞跃。 我们只是希望这些API能够达到他们已经为自己建立的炒作。

新的图形API和PC游戏的未来