新的图形程序员应该学习Vulkan而不是OpenGL吗?


53

摘自Wiki:“ Vhkan API最初被Khrono称为'下一代OpenGL计划',并且这是 “一次重新设计,将OpenGL和OpenGL ES统一为一个不会倒退的通用API的尝试。与现有的OpenGL版本兼容”。

那么现在应该更适合学习图形编程的人学习Vulkan而不是OpenGL吗?看来它们将达到相同的目的。


1
如果您可以在一个API中执行某项操作,那么您可以在任何其他API中执行该操作,只是其执行方式将取决于该API。
A --- B

Answers:


33

几乎不!

这似乎很像询问“新程序员应该学习C ++而不是C”,还是“新艺术家应该学习数字绘画而不是物理绘画”。

尤其是由于它不向后兼容,仅因为有了一个新的图形处理程序,就排除了业内最常见的图形API是愚蠢的。另外,OpenGL做不同事情的方式也不同。公司完全有可能选择OpenGL而不是Vulkan,尤其是在游戏初期,并且该公司对不了解OpenGL的人不感兴趣,无论他们是否了解Vulkan。

专业化很少是可销售的技能。

对于那些不需要像这样开发自己的技能的人,例如独立开发人员,从他们的工具箱中删除工具甚至更愚蠢。独立开发者更加依赖灵活性,并且能够在获得资金的基础上选择可行的方法。专门从事Vulkan只能限制您的选择。

专业化很少是有效的范例。


2
好答案,让我想起了这一点:elise.com/quotes/heinlein
请问

7
这种C ++类比是不合适的。Vulkan是由OpenGL的创建者开发的新一代下一代API。C ++是既定的,大多是向后兼容的竞争对手C.
莫比磁盘

这些细节与类推无关紧要。
mHurley,

6
声称专业化效率低下或无法销售很天真。知道每种口语中的所有五个单词的翻译是没有用的,人们会雇用精通(也专门)少数语言的翻译。现在,过度专业化有问题的。完全掌握一种语言并且仅知道该语言的翻译员也不是有用的翻译员。开发人员(无论是独立开发人员还是其他开发人员)都必须小心,不要花所有时间学习新工具。最终,他们需要实际做的东西卖,免得他们发现自己破产
8bittree

需要明确的是,在OpenGL和Vulkan方面,我并不一定要与您不同意。在这种情况下,最好学习两者而不是仅学习Vulkan。
8bittree'6

40

如果您现在就开始,并且想要进行GPU工作(而不是始终使用Unity这样的游戏引擎),那么您绝对应该从学习Vulkan开始。也许您以后也应该学习GL,但是有几个原因让您优先考虑Vulkan。

  1. GL和GLES是在多年前设计的,当时GPU的工作原理大不相同。(最明显的区别是立即模式绘制调用与平铺和命令队列。)GL鼓励您以立即模式样式进行思考,并且有很多遗留问题。Vulkan提供的编程模型与现代GPU的工作方式更加接近,因此,如果您学习Vulkan,您将对技术的真正作用以及有效和无效方面有更好的了解。我看到许多人开始使用GL或GLES并立即养成不良习惯,例如针对每个对象发出单独的绘图调用,而不是使用VBO,或更糟的是使用显示列表。对于GL程序员来说,很难找出不再鼓励的内容。

  2. 从Vulkan迁移到GL或GLES要容易得多,反之亦然。Vulkan明确显示了许多在GL中隐藏或不可预测的事情,例如并发控制,共享和呈现状态。从驱动程序到应用程序,这增加了很多复杂性:但是,这样做可以控制应用程序,并且更容易获得可预测的性能和不同GPU供应商之间的兼容性。如果您有一些可以在Vulkan中运行的代码,则很容易将其移植到GL或GLES,并且最终会使用GL / GLES良好的习惯。如果您的代码可以在GL或GLES中运行,则几乎必须重新开始以使其在Vulkan中有效地工作:尤其是如果它是以旧样式编写的(请参见第1点)。

首先,我担心Vulkan很难编程,尽管对于大型公司的经验丰富的开发人员来说可以这样做,但这对于独立开发者和业余爱好者来说是一个巨大的障碍。我向工作组的一些成员提出了这个问题,他们说,他们已经和已经搬到Vulkan的人进行了交流。这些人的范围从Epic致力于UE4集成的开发人员到业余游戏开发人员。他们的经验是,开始学习(即在屏幕上显示一个三角形)需要学习更多的概念,并需要更长的样板代码,但这并不太复杂,即使对于独立开发者也是如此。但是进入这一阶段后,他们发现构建一个真正的可交付应用程序要容易得多,因为(a)行为在不同供应商的实现之间更可预测,并且(b)在打开所有效果的情况下执行效果良好的操作并不需要太多的反复试验。凭借来自实际开发人员的经验,他们使我相信,即使对于图形初学者而言,针对Vulkan进行编程也是可行的,并且一旦通过本教程并开始构建可以提供给其他人的演示或应用程序,总体复杂度就会降低。

就像其他人所说的那样:GL在许多平台上都可用,WebGL是一种很好的交付机制,现有许多使用GL的软件,并且有很多雇主为此雇用技能。未来几年,Vulkan将会逐步发展并发展生态系统。由于这些原因,您将完全排除学习GL是愚蠢的。即便如此,如果您从帮助您理解GPU的事情入手,而不是了解GPU的工作原理,那么您将可以轻松得多,并成为一名更好的GL程序员(和一般而言更好的GPU程序员)。 20年前。

当然,还有更多选择。我不知道这是否与您特别相关,但我还是想对其他访客说出来。

成为独立游戏开发商,游戏设计师或进行VR体验,您无需学习Vulkan或GL。许多人开始使用游戏引擎(Unity或UE4目前很流行)。使用这样的引擎将使您专注于要创建的体验,而不是其背后的技术。它将向您隐藏GL和Vulkan之间的差异,您无需担心平台上支持哪种功能。它可以让您了解3D坐标,变换,照明和动画,而无需一次处理所有粗糙的细节。一些游戏或VR工作室仅在引擎上工作,而他们根本没有专职的GL专家。即使在自己编写引擎的大型工作室中,进行图形编程的人还是少数,

学习如何与GPU交互的细节无疑是一项有用的技能,许多雇主都会重视这一技能,但是您不应该觉得必须学习它才能进入3D编程。即使您知道它,也不一定每天都会使用。


2
我有些不同意。对于经验丰富的开发人员,Vulkan(和DX12)已被证明很难实施。凭借Vulkan赋予您的所有力量,将自己拍到脚上非常容易。另外,Vulkan需要更多的样板代码。对于刚开始学习GPU编程的人,我倾向于认为Vulkan会非常压倒性的。
RichieSams

2
@RichieSams我认为您的意思不是“实现”。只有GPU供应商才需要实现Vulkan,这比实现OpenGL容易得多。(相信我,我已经做到了!)但是假设您的意思是很难与之集成或反对,那么我在段落中添加了一些我从Vulkan工作组中学到的信息。
Dan Hulme

正确。实施也许是一个糟糕的选择。我的意思是在您的程序中使用。但是我喜欢你的编辑。放好
RichieSams

@DanHulme-您的评论“ GL鼓励您以即时模式进行思考”令我感到惊讶。我认为这仅适用于早期的 OpenGL版本吗?
ToolmakerSteve

1
@ToolmakerSteve OpenGL工作组在添加并发和批处理写入方面做了很多工作,因此您可以采用适合于平铺/延迟实现的方式来表达程序。但这仍然是在即时模式时代奠定的基础,这就是为什么这些人认为需要在Vulkan重新开始的原因。而且我仍然看到许多新用户从GL开始,并形成了实现工作方式的即时模式思维模型。
Dan Hulme

26

学习图形编程不仅仅是学习API。这是关于学习图形的工作原理。顶点变换,光照模型,阴影技术,纹理贴图,延迟渲染等。这些绝对与用于实现它们的API无关。

所以问题是这样的:您是否想学习如何使用API​​?还是您想学习图形

为了处理硬件加速的图形,您必须学习如何使用API​​访问该硬件。但是,一旦您能够与系统交互,您的图形学习便不再关注API为您所做的事情,而是关注图形概念。照明,阴影,凹凸贴图等

如果您的目标是学习图形概念,那么您花费在API上的时间就是您不花费在学习图形概念上的时间。如何编译着色器与图形无关。如何发送制服,如何将顶点数据上传到缓冲区等也没有。这些工具是进行图形工作的重要工具。

但是它们实际上不是图形概念。它们是达到目的的手段。

在达到准备开始学习图形概念的程度之前,Vulkan 需要花费大量的工作和学习。将数据传递给着色器需要显式的内存管理和访问的显式同步。依此类推。

相比之下,使用OpenGL达到这一点所需的工作更少。是的,我谈论的是基于着色器的现代核心配置文件OpenGL。

只需比较完成清除屏幕之类的操作所需的时间即可。在Vulkan中,这至少需要对大量概念有所了解:命令缓冲区,设备队列,内存对象,图像以及各种WSI构造。

在OpenGL中......这是三个功能:glClearColorglClear,和特定于平台的交换缓冲通话。如果您使用的是更现代的OpenGL,则可以将其简化为两个:glClearBufferuiv和交换缓冲区。您不需要知道什么是帧缓冲区或它的图像来自哪里。您清除它并交换缓冲区。

因为OpenGL对您隐藏了很多东西,所以与学习图形硬件的接口相比,花费很少的精力达到实际学习图形的地步。

此外,OpenGL是(相对)安全的API。通常,当您做错事时,它将发出错误。Vulkan不是。尽管可以使用调试层来提供帮助,但核心的Vulkan API几乎不会告诉您任何信息,除非出现硬件故障。如果做错了,可能会导致垃圾渲染或使GPU崩溃。

再加上Vulkan的复杂性,意外地做错事变得非常容易。忘记将纹理设置为正确的布局可能在一种实现下有效,但在另一种实现下则无效。忘记同步点有时可能会起作用,但随后突然失败似乎是没有原因的。依此类推。


综上所述,学习图形比学习图形技术要多得多。Vulkan尤其是其中一个领域。

图形性能

成为3D图形程序员通常需要一些有关如何优化代码的想法。在这里,OpenGL的信息隐藏和后台处理成为问题。

OpenGL内存模型是同步的。只要用户不知道区别,就可以允许该实现异步发出命令。因此,如果渲染到某个图像,然后尝试从中读取,则实现必须在这两个任务之间发出显式同步事件。

但是,为了在OpenGL中获得性能,您必须知道实现可以做到这一点,因此可以避免它。您必须了解实现在哪里秘密发出同步事件,然后重写代码以尽可能避免它们。但是API本身并没有使这一点变得显而易见。您必须从某个地方获得了这些知识。

使用Vulkan ...,是必须发布这些同步事件的人。因此,您必须意识到硬件不会同步执行命令的事实。您必须知道何时需要发出这些事件,因此必须知道它们可能会使您的程序变慢。因此,您将尽一切可能避免它们。

像Vulkan这样的显式API会迫使您做出此类性能决策。因此,如果您学习Vulkan API,您已经对什么事情将变得缓慢而什么事情将变得很快有了一个很好的主意。

如果必须执行一些帧缓冲工作以迫使您创建新的渲染通道,则可能会比将其放入渲染通道的单独子通道中的速度慢。这并不意味着您不能这样做,但是API会先告诉您这可能会导致性能问题。

在OpenGL中,API基本上邀请您随意更改帧缓冲区附件。没有关于快速或慢速更改的指南。

因此,在这种情况下,学习Vulkan可以帮助您更好地了解如何更快地制作图形。它肯定会帮助您减少CPU开销。

到达学习图形渲染技术的位置还需要更长的时间。


1
我很高兴您发表这篇文章,因为它清楚地表明了我在回答中犹豫要表达的一些想法:学习概念最重要。我认为我们的不同之处在于您鼓励GL,因为它更容易上手,而我认为上手容易带来以传统方式做事的风险。与传统风格的编程相比,在GL中很难知道“现代GL惯用语”是什么。如果没有人告诉您使用VAO而不是每个图元使用单独的draw调用,则以后更难了解该错误。
Dan Hulme

1
@DanHulme:全部使用正确的学习材料即可。在线上有很多此类材料使用现代习语。任何人都不应仅阅读参考手册或规范来尝试学习图形。
Nicol Bolas

您听起来真的很简单!即便如此,我仍然看到程序员开始着手于图形(其中一些在其他领域非常有能力)并且使用传统功能,而对性能特性一无所知。在Vulkan中确实很难出错,因为这会使昂贵的东西看起来很昂贵。无论如何,我们不需要争论。我同意您的主要观点:学习概念非常重要,并且无需Vulkan或GL就可以做到。
Dan Hulme

@DanHulme:“ 在Vulkan中很难出错 ”,因为您正忙于将其他所有错误放回;)此外,在Vulkan中获得性能错误仍然很容易。不必要的同步化。仅使用“常规”图像布局。不利用子通道。频繁的管道更改。依此类推。更不用说,不同的供应商甚至没有就如何最好地使用Vulkan达成共识。
Nicol Bolas

2
@DanHulme:至于是多么容易使用OpenGL的现代化,我尽我所能,以使它容易。如果人们坚持从NeHe之类的垃圾站点学习,或者通过阅读随机文档,那不是任何人都可以帮助的。您可以将马带到水里,但不能让它们喝水。
Nicol Bolas

7

OpenGL的主要吸引力(至少对我而言)是它可在许多平台上使用。目前,Vulkan无法在OSX上运行,并且Apple具有竞争性的API,称为Metal。苹果很可能需要一段时间才能支持Vulkan,而当他们支持Vulkan时,Vulkan的支持可能只会出现在其最新硬件上。OpenGL已经支持大多数硬件,并将继续这样做。


我敢打赌,如果OSX曾经支持Vulkan,它将仅支持Vulkan的一小部分,并且也将成为适用于Web浏览器的下一代图形api,因此OpenGL的使用方式(在一定程度上)仍然比它更简单。 Vulkan,vulkan在渲染管道方面的简单性获得了它在显式处理许多其他内容方面的损失
GameDeveloper

1
@DarioOO OpenGL立即模式比您所说的非立即模式要简单得多,但不建议使用。
user253751 '16

1
@Gavin:应该注意,OSX也不支持OpenGL 4.2或更高版本。因此,如果您想在OSX上使用OpenGL的最新版本,则不能。苹果极不可能采用更高版本的OpenGL。Apple平台全集成在Metal上,因此跨平台都是一种失败。
Nicol Bolas

除非被迫,否则苹果公司永远不会支持Vulkan,而且其经济性非常简单。通过全力以赴,他们希望锁定那些需要GLES2不能提供但又没有资源为Vulkan和Metal编写游戏的手机游戏开发商。他们准备为此牺牲Mac的小型游戏生态系统,尤其是如果iOS开发人员也在Mac App Store上发布的话。
乔纳森·鲍德温

Vulkan现在可以在macOS(以前是OS X)上工作:moledgl.com
Alexander

4

这取决于您想做什么。如果您只想自己学习图形编程,那么选择什么都没关系。

如果您正在考虑专业工作,建议您选择Vulkan。它更接近硬件,我认为有关硬件功能的知识对图形程序员很重要。

Vulkan离硬件更近,因为OpenGL可以在Vulkan中手动完成许多工作,例如执行命令队列。另外,内存管理取决于应用程序而不是驱动程序。您需要担心分配内存uniforms(从CPU传递到GPU的变量),跟踪内存。您有更多需要担心的事情,但是它也给内存使用带来了更多自由。这听起来很吓人,但实际上并非如此。这只是您需要学习的下一个API。

了解这些内容还将有助于理解GPU的工作方式。是什么让您可以在Vulkan和OpenGL上进行一些优化。

我想到的另一件事是,如果您开始学习图形编程,可能是当您寻找一份工作时,因为Vulkan将会更受欢迎(也许比OpenGL更受欢迎)。而且,据我所知,大多数使用某些图形API的公司都围绕它编写了自己的函数,因此有可能您在工作中不会用OpenGL或Vulkan进行编写,但是有关GPU的知识将永远有用。


2

我已经“参与”了图形编程已有几个月了。

现在我还在读高中,我可以告诉你我几乎总是在寻求开发跨平台应用程序。实际上,这是我与Vulkan有关的第一大问题-并非针对所有平台都可以开发。我在Java中使用OpenGL,已经工作了6个月以上。

我对Vulkan的主张的另一个问题是它声称如何变得更好。虽然OpenGL当然不会经常更新其网站。他们继续不断发布更新,我一直期待新的更新能够更快地运行或与新硬件一起更好地工作。

就是说,虽然我主要使用OpenGL,但我了解DirectX和Vulkan的基本原理。虽然我没有广泛地与他们合作,但尤其是Vulkan,因为它非常难学,并且没有像OpenGl和DirectX那样结构良好的程序设计。

最后,我想补充一点,就是像我主要使用Java一样,专门研究单个领域,而OpenGL并不是很容易上市。如果我想在一家从事游戏的公司工作,那么在大多数情况下,OpenGL仅会用于为Linux和Android开发以及可能的OSX进行游戏。Windows和控制台的DirectX <在某些情况下可以替换的Vulkan。

我不能永远支持OpenGL更新,我也不会。但这是我开发的偏好。


我对Vulkan的主张还有另一个问题,那就是它声称如何变得更好。 ” Vulkan并不主张任何东西。这只是一个API;它无法提出索赔。
Nicol Bolas

您是否意识到Vulkan和GL由几乎相同的人生产?
Dan Hulme

是的,我愿意。我仍然更喜欢GL
Winter Roberts

2

我想给你我的图形初学者的观点。我意识到(多年来在另一个领域中担任工程师)是基本概念是最重要的部分。一旦您对这些有了深刻的了解,学习最后一个闪亮的新API就是最困难的部分。我不知道您是不是最年轻的尝试编写新的《天际》的人,或者您是否正在CG领域寻找工作。

我告诉你,我认为这是最好的办法在我看来,学好计算机图形学“像亲”。

  1. 像专业人士一样学习线性代数和几何。没有这个,忘记任何奇特的API或图形
  2. 买一本有关计算机图形学的好书(例如,计算机图形学基础
  3. 在学习本书时,请设置一个编程环境,使您可以绘制图像并实现算法!它可以是Java 2D或C ++和SDL,甚至是Python和Pygame。在此阶段,您需要先启动并运行具有多个摄像机视角的旋转纹理齿轮,然后才能获取10000 FPS
  4. 现在使用OpenGL,Vulkan或DirectX,并重复您的漂亮示例(请参见上文)。

在了解如何划界线之前开始担心性能,就像在获得驾驶执照之前担心汽车的空气动力学特性一样。


0

我在C ++中自学成才,没有任何正规的教育,并且在过去的15年中,我已经通过Modern OpenGL和DirectX 9c,10和11学习了OpenGL 1.0。我还没有加入DirectX 12,并且一直想在Vulkan尝试一下。我仅完成了一些基本的教程,即可使用Vulkan绘制一个简单的三角形或一个简单的旋转立方体。与DirectX 11和OpenGL 3.3+一样,我已经编写了可以正常工作的3D游戏引擎,甚至使用它们来构建简单的游戏。

我不得不说,这取决于学习者的整体环境。如果您只是进入3D图形编程,那么我想说的是入门者可以使用OpenGL或DirectX 11,因为那里有大量的教程,资源,示例以及已经可以运行的应用程序。学习3D图形绝不是一件容易的事。

如果我们从程序设计的角度上进行抽象,而只关注使用哪种技术的概念,这些技术涉及到导致数据集,数据结构和算法的不同层次的数学运算;在尝试构建3D游戏引擎或有效使用现有的3D游戏引擎之前,您首先需要了解和理解很多知识。

现在,如果您已经了解了其背后的所有数学和理论,并且您已有一定的编程经验,则可以使用现有的API,库和应用程序(例如Unity或Unreal Engine),只需编写使应用程序正常工作所需的源代码和脚本即可。

因此,从我自己的理解和我的看法来看,如果您只是想开发一款游戏,那么这就是您想要的。与现有的框架一起使用,可以使您的生产时间大大缩短。另一方面,如果您想了解游戏引擎/物理引擎/动画引擎和模拟器是如何设计的并希望自己构建,请在这里选择API,例如DirectX, OpenGL或Vulkan。这里的决定因素之一也将是您现有的编程知识。我的意思是,如果您对多线程,同步与异步调用,内存隔离,数据争用,信号量和并行性(并行编程)一无所知,

我之所以这么说是因为,如果您不知道如何正确地管理内存以及线程和访问时间,那么,Vulkan会咬你的屁股!OpenGL和DirectX将通过消耗更多的CPU能力来一路牵手。

现在,如果您的编程知识水平是不错的,并且您具有下列数学背景,其中涉及代数,几何,三角学,布尔代数,概率,统计,向量,基于矩阵的代数,微积分I,II等各个级别。无限(笑)向量演算,线性代数,线性方程组,具有多变量向量演算的解析几何,数和集理论,数据集和结构,计算分析,计算和算法设计。然后,您可以了解制作实际游戏引擎所需的概念,而无需任何应用数学或任何物理方程式。一旦具备了这种背景和足够的编程经验,尤其是内存管理和指针算术,那么您就可以开始构建游戏引擎了。

因此,这里的事情是您必须了解制作游戏引擎所需的所有方面,以便进行高级图形编程。如果您只是在进行2D图形处理,那么生活就不会太困难,因为您可以在没有任何上述API的情况下在Python中进行处理!但是,如果您想认真对待并设计出功能强大且功能强大的功能强大的成熟游戏引擎,那么这里的选择将是C或C ++,并使用OpenGL,Direct X或Vulkan。他们中的任何一个都很好。现在,如果您要从头开始构建Engine,并且正在寻找资源开销最少的最“高效”运行的Engine,那么您将需要选择Vulkan。但是,如果您走这条路线,您至少应该了解我上面提到的所有内容以及某些知识!

因此,如您所见,Vulkan并非真正面向该领域的初学者。您必须具有所有数学,编程范例,所有不同类型的数据集和算法(包括线程,内存同步,并行编程)的广泛知识。即便如此,这只是使应用程序将简单的2D三角形加载到屏幕上。在OpenGL中大约100行代码或DirectX中250行代码可以完成的工作,在Vulkan中几乎需要1000行代码!

Vulkan将一切留给您,因为您要负责在应用程序中使用Vulkan的各个方面。没有手握,它不会妨碍您,它可以让您用脚射击,也可以吊死自己,以购买递归套索!

现在,这并不是说初学者或不熟悉该领域的人不应该学习Vulkan,但我为他们建议的是:首先了解OpenGL和DirectX的知识,以使自己立于不败之地。基本应用程序的结构只是渲染一个简单的三角形或旋转的立方体。熟悉它们的API及其结构的重复模式。在学习可以并行学习Vulkan的同时,您可以通过这种方式了解三个人如何完成相同的任务,但是知道他们是如何做的不同,然后还可以比较不同API之间的结果以及然后,您可以从中进行选择。这种方法还可以在工具箱中提供另一个工具,您甚至可以编写应用程序来支持这3种工具,并使用“

最后,这取决于该人选择要走的路,从那里开始,他们的成功将取决于他们的奉献精神,不断学习,努力,尝试和错误,最重要的是他们的失败。如果您没有失败,那么您就不会成功!只有当您失败,发现错误,纠正错误,继续前进并重新站起来再做一次时,您才能成功!


-1

您应该首先在许多平台上学习OpenGL,因为这是Graphics的标准。

即使有较新的库,理解基础知识并使用整个行业使用的语言也是非常重要的……尤其是因为Vulkan不会再在大公司中使用了。

  1. 没有人愿意立即适应并最终陷入不稳定的Framework / Library。

  2. 他们将需要聘用/重新培训他们目前的Open-GL程序员,并且没有必要。


另外,我听说OpenGL和Vulkan并不完全相同。我听说Vulkan是一个比OpenGL更底层的API,并且更接近于机器代码。

我刚刚发现的这个答案似乎有很多有用的信息

https://gamedev.stackexchange.com/questions/96014/what-is-vulkan-and-how-does-it-differ-from-opengl


需要考虑的另一件事是OpenGL 1发生的问题。

OpenGL 1到OpenGL 2发生了重大变化,并且由于许多人都在使用OpenGL1,并且硬件支持它,因此在某些应用程序/引擎中需要实现向后兼容性,这有时对于使开发人员继续提供支持感到非常痛苦。 。

除了支持之外,语言变化很大,您必须学习新知识。

JavaFX(从1.x到2.x)和Play等框架都发生了这种情况。框架(也从1.x到2.x)。完成对框架的更改,这意味着我们必须重新学习...所有内容...


因此,实质上,您应该做的就是等到Vulkan稳定为止。那意味着要等到大概2.0补丁。IT并不意味着您无法了解Vulkan的基础知识,而是知道这可能会改变。我认为,像Kronos这样的团队从一开始就将提供非常稳定的API,尤其是因为有多个Nvidia和AMD工程师在Vulkan上工作,其中包括显然负责该项目的Nvidia高尚人士以及The Mantle基地;但是,像任何软件一样,我们的编码人员从一开始就将看到它的运行状况,但是许多人都在警惕并等待发生什么。


Vulkan现在很稳定。您的GL 1.0 vs 2.0类比是恰当的。现在开始使用GL就像在GL 2.0推出六个月之后开始学习GL 1.0一样。
Dan Hulme

1
Vulkan可能是“稳定的”,这并不意味着事情不会改变,这是语言的本质,我在最近几年中对语言进行了2次最近的更改,那么我们怎么知道Vulkan不会发生这种情况?您基本上是在说学习OpenGL是浪费,这是错误的。使它看起来像OpenGL已经死了,将不再使用...也是错误的。此外,我并不是唯一相信Vulkan可能存在稳定性问题的人。可能没有,但是有了任何新的语言,这就是您要寻找的。
XaolingBao

1
当然情况会有所变化,工作组已经在为下一个规范版本开发新功能(ssh,您没有从我那儿听到)。稳定意味着这些内容将添加到规范中,并且您今天所了解的内容将在两年后仍然有效。OTOH,您今天对GL的了解已经与GPU的工作方式相差甚远:就像了解可编程着色器世界中的固定功能管线一样。如果您阅读了我的答案,您会发现我认为现在学习GL并不是浪费。但是“ Vulkan太新了”并不是打折的充分理由。
Dan Hulme

1
@Lasagna:“ 这是随时更改的,没有多少公司会立即适应使用它 ” Valve。史诗。统一。他们全都投入了大量资金,以使其发动机在Vulkan上正常工作。CryTech和Id也不完全忽略它。因此,您的陈述与事实不相称。
Nicol Bolas

2
@Lasagna:“ 仅仅因为它已被改编成3D引擎,并不意味着公司正在向其投资项目。 ”……因此3D引擎不符合“项目”的资格吗?DOTA2是否算作“项目”?因为现在它已经支持Vulkan 。三星的智能手机和平板电脑产品线是否算作“项目”?因为他们正在考虑将其合并到UI中。现实情况是,如果该平台能够满足他们的需求,那么很多人都愿意“成为测试新平台的人”。
Nicol Bolas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.