#1 楼
这似乎很像在问“新程序员应该学习C ++而不是C”,还是“新艺术家应该学习数字绘画而不是物理绘画。”
尤其是由于它不向后兼容,图形程序员将愚蠢地排除行业中最常见的图形API,仅仅是因为有了一个新的图形API。此外,OpenGL做不同事情的方式也不同。公司完全有可能选择OpenGL而不是Vulkan,尤其是在游戏初期,并且该公司对不了解OpenGL的人不感兴趣,无论他们是否了解Vulkan。 />专业化很少是一种适销对路的技能。
对于那些不需要像这样开发自己的技能的人,例如独立开发者,从他们的工具箱中删除工具甚至更愚蠢。独立开发者更加依赖灵活性,并且能够在获得资金的基础上选择可行的方法。专门研究Vulkan仅会限制您的选择。
专业化很少是一种有效的范例。
评论
$ \ begingroup $
好的答案,让我想起了:elise.com/quotes/heinlein_-_specialization_is_for_insects
$ \ endgroup $
–将
16年6月8日在16:52
$ \ begingroup $
这种C ++类推是不合适的。 Vulkan是由OpenGL的创建者开发的新一代下一代API。 C ++是C的既定竞争对手,主要是向后兼容。
$ \ endgroup $
– Moby磁盘
16年6月9日在13:33
$ \ begingroup $
这些细节与类推无关。
$ \ endgroup $
– mHurley
16年6月9日在13:59
$ \ begingroup $
声称专业化效率低下或无法销售很天真。知道每种口语中的所有五个单词的翻译是没有用的,人们会雇用精通(也就是精通)少量语言的翻译。现在,过度专业化是有问题的。完全掌握一种语言并且仅知道该语言的翻译员也不是有用的翻译员。开发人员(无论是独立开发人员还是其他开发人员)都必须小心,不要花所有时间学习新工具。最终,他们需要实际出售一些东西,以免破产。
$ \ endgroup $
– 8bittree
16年6月9日在18:32
$ \ begingroup $
@MobyDisk-实际上,C ++类比是正确的,尽管“ C vs Java”或“ C vs C#”可能是更好的比较。 Vulkan是比OpenGL低的API,不是下一代的替代品。赫罗诺斯认为,它们是“互补的”。最终,我希望我们能在Vulkan之上看到一个受OpenGL启发的图层。如果它成功地将性能增益与更高级别的API调用结合在一起,从而为程序员带来便利,那么它将是下一代产品。
$ \ endgroup $
–ToolmakerSteve
17-10-4在20:52
#2 楼
如果您现在就开始,并且想要进行GPU工作(而不是始终使用Unity这样的游戏引擎),那么绝对应该从学习Vulkan开始。也许您以后也应该学习GL,但是有很多理由要优先考虑Vulkan。 (最明显的区别是立即模式绘制调用与平铺和命令队列。)GL鼓励您以立即模式样式进行思考,并且有很多遗留问题。 Vulkan提供的编程模型与现代GPU的工作原理非常接近,因此,如果您学习Vulkan,您将更好地了解该技术的真正工作原理,什么是有效的以及什么是无效的。我看到很多人开始使用GL或GLES并立即养成不良习惯,例如针对每个对象发出单独的绘图调用,而不是使用VBO,或更糟的是使用显示列表。对于GL程序员来说,很难找出不再鼓励的内容。 Vulkan明确显示了许多在GL中隐藏或不可预测的事情,例如并发控制,共享和呈现状态。从驱动程序到应用程序,这增加了很多复杂性:但是,这样做可以控制应用程序,并使获得不同GPU供应商之间可预测的性能和兼容性更加容易。如果您有一些可以在Vulkan中使用的代码,则很容易将其移植到GL或GLES,并且最终会使用GL / GLES良好习惯。如果您的代码可以在GL或GLES中运行,则几乎必须重新开始以使其在Vulkan中高效工作:尤其是如果它是以旧式风格编写的(请参见第1点)。首先,我担心Vulkan很难编程,尽管对于大型公司的经验丰富的开发人员来说可以这样做,但对于独立开发者和爱好者来说,这将是一个巨大的障碍。我向工作组的一些成员提出了这个问题,他们说,他们已经和已经搬到Vulkan的人进行了交流,得出一些数据点。这些人的范围从Epic致力于UE4集成的开发人员到业余游戏开发人员。他们的经验是,入门(即在屏幕上出现一个三角形)需要学习更多的概念和更长的样板代码,但是即使对于独立开发者来说也并不复杂。但是进入这一阶段后,他们发现构建一个真正的可交付应用程序要容易得多,因为(a)在不同供应商的实现之间行为的可预测性要好得多,并且(b)所有打开的效果并没有涉及太多的反复试验。凭借来自实际开发人员的经验,他们使我相信,即使对于图形初学者,针对Vulkan进行编程也是可行的,并且一旦您通过本教程并开始构建可以提供给他人的演示或应用程序,总体复杂度就会降低。 br />
正如其他人所说:在许多平台上都可以使用GL,WebGL是一种很好的交付机制,现有许多使用GL的软件,并且有许多雇主为此雇用技能。未来几年,Vulkan将会逐步发展并发展生态系统。由于这些原因,您将完全排除学习GL是愚蠢的。即便如此,如果您从帮助您了解GPU的事情入手,而不是了解GPU的工作原理,那么您将可以轻松得多,并成为一名更好的GL程序员(和一般而言更好的GPU程序员)。 20年前。
当然,还有更多选择。我不知道这与您是否特别相关,但是我还是应该对其他访问者说这句话。 VR体验,您无需学习Vulkan或GL。很多人开始使用游戏引擎(Unity或UE4目前很流行)。使用这样的引擎将使您专注于要创建的体验,而不是其背后的技术。它将向您隐藏GL和Vulkan之间的差异,您无需担心平台上支持哪种功能。它可以让您了解3D坐标,变换,照明和动画,而无需一次处理所有粗糙的细节。一些游戏或VR工作室仅在引擎上工作,而他们根本没有专职的GL专家。即使在编写自己的引擎的大型工作室中,进行图形编程的人员还是少数,而且大多数开发人员都在使用更高级别的代码。
了解有关如何与之交互的详细信息GPU当然是一项有用的技能,许多雇主都会重视它,但是您不应该觉得必须学习它才能进入3D编程。即使知道了,也不一定每天都会使用。
评论
$ \ begingroup $
我有些不同意。对于经验丰富的开发人员,Vulkan(和DX12)已被证明很难实施。凭借Vulkan赋予您的所有力量,将自己拍到脚上非常容易。另外,Vulkan需要更多的样板代码。对于刚开始学习GPU编程的人来说,我倾向于认为Vulkan将非常压倒一切。
$ \ endgroup $
–RichieSams
16 Jun 10'在12:09
$ \ begingroup $
@RichieSams我认为您的意思不是“实现”。只有GPU供应商才需要实现Vulkan,这比实现OpenGL容易得多。 (相信我,我已经做到了!)但是假设您的意思是很难与之集成或反对,那么我在段落中添加了一些我从Vulkan工作组中学到的信息。
$ \ endgroup $
–丹·赫尔姆
16年6月10日在16:01
$ \ begingroup $
正确。实施也许是一个不明智的选择。我的意思是在您的程序中使用。但是我喜欢你的编辑。说得好
$ \ endgroup $
–RichieSams
16年6月10日在16:06
$ \ begingroup $
@DanHulme-您的评论“ GL鼓励您以即时模式进行思考”令我惊讶。我认为这仅适用于早期的OpenGL版本?
$ \ endgroup $
–ToolmakerSteve
17-10-4在21:07
$ \ begingroup $
@ToolmakerSteve OpenGL WG在添加并发和批处理写入方面做了很多工作,因此您可以采用适合于平铺/延迟实现的方式来表达程序。但这仍然是在即时模式时代奠定的基础,这就是为什么这些人认为需要在Vulkan重新开始。而且我仍然看到许多新用户从GL开始,并形成了实现工作方式的即时模式思维模型。
$ \ endgroup $
–丹·赫尔姆
17-10-5在9:06
#3 楼
学习图形编程不仅仅是学习API。这是关于学习图形的工作原理。顶点转换,光照模型,阴影技术,纹理贴图,延迟渲染等。这些与您用来实现它们的API完全无关。所以问题是这样的:您是否想学习如何使用API?还是要学习图形?
为了处理硬件加速的图形,您必须学习如何使用API访问该硬件。但是,一旦您能够与系统交互,您的图形学习就不再关注API为您做的事情,而是关注图形概念。照明,阴影,凹凸贴图等。
如果您的目标是学习图形概念,那么您花费在API上的时间就是您没有在学习图形概念上的时间。如何编译着色器与图形无关。也没有发送制服的方法,也没有将顶点数据上传到缓冲区的方法,等等。这些都是进行图形工作的工具和重要工具。它们是达到目的的一种方法。
在开始准备学习图形概念之前,与Vulkan进行了大量工作和学习。将数据传递到着色器需要显式的内存管理和访问的显式同步。依此类推。
相比之下,使用OpenGL达到这一点所需的工作更少。是的,我在谈论的是基于着色器的现代核心配置文件OpenGL。在Vulkan中,这至少需要对大量概念有所了解:命令缓冲区,设备队列,内存对象,图像以及各种WSI构造。
在OpenGL中,它具有三个功能:
glClearColor
,glClear
和特定于平台的交换缓冲区调用。如果您使用的是更现代的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开销。
还需要花费更长的时间才能达到学习图形渲染技术的地步。
评论
$ \ begingroup $
很高兴您发布此帖子,因为它很清楚地表明了我在回答中犹豫的一些想法:学习概念至关重要。我认为我们的不同之处在于您鼓励GL,因为它更容易上手,而我认为上手容易带来用传统方式做事的风险。与传统风格的编程相比,在GL中很难知道“现代GL惯用语”是什么。如果没有人告诉您使用VAO而不是每个基元使用单独的绘制调用,则以后更难了解该错误。
$ \ endgroup $
–丹·赫尔姆
16 Jun 10'在16:08
$ \ begingroup $
@DanHulme:都是使用正确的学习材料。在线上有很多此类材料使用现代习语。任何人都不应仅阅读参考手册或规范来尝试学习图形。
$ \ endgroup $
–尼科尔·波拉斯(Nicol Bolas)
16年6月10日在16:28
$ \ begingroup $
您听起来真的很简单!即便如此,我仍然看到程序员开始着手于图形(其中有些在其他领域非常有能力)并且使用传统功能,而对性能特性一无所知。在Vulkan中确实很难出错,因为这会使昂贵的东西看起来很昂贵。无论如何,我们不需要争论。我同意您的主要观点:学习概念非常重要,并且无需Vulkan或GL就可以做到。
$ \ endgroup $
–丹·赫尔姆
16年6月11日,0:08
$ \ begingroup $
@DanHulme:“在Vulkan中很难做到这一点真的很困难”,因为您太忙于将其他所有内容都弄错了;)此外,在Vulkan中也很容易出错。不必要的同步化。仅使用“常规”图像布局。不利用子通道。频繁的管道更改。依此类推。更不用说,不同的供应商甚至没有就如何最好地使用Vulkan达成共识。
$ \ endgroup $
–尼科尔·波拉斯(Nicol Bolas)
16年6月11日,0:23
$ \ begingroup $
@DanHulme:关于使用现代OpenGL有多么容易,我会尽力使它变得简单。如果人们坚持要从像NeHe这样的垃圾站点学习,或者通过阅读随机文档,那不是任何人都可以帮助的。您可以带领马喝水,但不能让马喝水。
$ \ endgroup $
–尼科尔·波拉斯(Nicol Bolas)
16 Jun 11'在0:25
#4 楼
OpenGL的主要吸引力(至少对我而言)是它可在许多平台上使用。目前,Vulkan无法在OSX上运行,并且Apple具有竞争性的API,称为Metal。苹果很可能需要一段时间才能支持Vulkan,而当他们支持Vulkan时,Vulkan的支持可能只会出现在其最新硬件上。 OpenGL已经支持大多数硬件,并将继续这样做。评论
$ \ begingroup $
我敢打赌,如果OSX曾经支持Vulkan,它将仅支持Vulkan的一小部分,并且也将成为适用于Web浏览器的下一代图形API,OpenGL仍然使用起来更简单(一定程度上)当然)比Vulkan,vulkan在渲染管道方面的简单性获得了哪些好处,而在其他许多事物的显式处理中却失去了
$ \ endgroup $
–CoffeDeveloper
16年6月8日在8:04
$ \ begingroup $
@DarioOO OpenGL即时模式比任何您称其为非立即模式的东西都更易于使用,但不建议使用。
$ \ endgroup $
–user253751
16年6月8日在8:56
$ \ begingroup $
@Gavin:应该注意,OSX也不支持OpenGL 4.2或更高版本。因此,如果要在OSX上使用OpenGL的最新版本,则不能。苹果极不可能采用更高的OpenGL版本。 Apple平台全集成在Metal上,因此跨平台都是一种失败。
$ \ endgroup $
–尼科尔·波拉斯(Nicol Bolas)
16年6月9日在17:40
$ \ begingroup $
除非被迫,否则苹果永远不会支持Vulkan,而且其经济意义非常简单。通过全力以赴,Metal希望锁定那些需要GLES2可以提供但又没有资源为Vulkan和Metal编写游戏的手机游戏开发人员。他们准备为此牺牲Mac的小型游戏生态系统,尤其是如果iOS开发人员也在Mac App Store上发布的话。
$ \ endgroup $
–乔纳森·鲍德温
16年6月30日在7:52
$ \ begingroup $
Vulkan现在可以在macOS(以前是OS X)上运行:moledgl.com
$ \ endgroup $
–亚历山大
18年6月11日在15:54
#5 楼
这取决于您想做什么。如果您只想学习图形编程,那么选择什么都没关系。如果您正在考虑专业工作,我建议您选择Vulkan。它更接近硬件,我认为有关硬件工作的知识对于图形程序员很重要。执行命令队列。
内存管理也取决于应用程序而不是驱动程序。您需要担心为
uniforms
(从CPU传递到GPU的变量)分配内存,并跟踪它们。您有更多需要担心的事情,但是它也给了内存使用更多的自由。听起来很吓人,但实际上不是。这只是您需要学习的下一个API。
理解这些内容也将有助于理解GPU的工作原理。是什么让您可以在Vulkan和OpenGL上进行一些优化。
我想到的另一件事是,如果您开始学习图形编程,可能是当您寻找一份工作时,因为Vulkan将会更受欢迎(也许比OpenGL更受欢迎)。而且,据我所知,大多数使用某些图形API的公司都围绕着它编写自己的函数,因此有可能在工作中您将不会用OpenGL或Vulkan进行编写,但是有关GPU的知识将永远有用。 br />
#6 楼
我想给你我的图形初学者对这个问题的看法。我意识到(多年来在另一个领域中担任工程师)是基本概念是最重要的部分。一旦您对这些有了深刻的了解,学习最后一个闪亮的新API就是最困难的部分。我不知道您是不是最年轻的尝试编写新的Skyrim程序的人,或者您是否正在CG领域寻找工作。我告诉您我认为这是我最好的方法学习“像专家一样”的计算机图形的见解。
像专家一样学习线性代数和几何。没有这个,就不要花哨的API或图形了
买一本关于计算机图形学的好书(例如,计算机图形学基础知识)
在学习本书的同时,建立一个编程环境,让您可以借鉴图像并实现算法!
它可以是Java 2D或C ++和SDL甚至是Python和Pygame。在此阶段,您需要先启动并运行具有多个摄像机视角的旋转纹理齿轮,然后再尝试获取10000 FPS。
现在使用OpenGL,Vulkan或DirectX并重复您的示例(请参见上文)。
在了解如何划界线之前开始担心性能,就像在获得驾驶执照之前担心汽车的空气动力学特性。
#7 楼
我一直在“从事”图形编程已有几个月了。 。实际上,这是我与Vulkan有关的第一大问题-并非针对所有平台都可以开发。我在Java中使用OpenGL,并且已经工作了6个月以上。虽然OpenGL当然不会经常更新其网站。他们继续不断地发布更新,我一直期待新的更新能够更快地运行或与新硬件一起更好地工作。 。虽然我没有广泛地与他们合作,但特别是Vulkan,因为它非常难学,并且没有像OpenGl和DirectX那样结构良好的编程。最后,我想补充一点,像我主要使用Java的单一领域,而OpenGL并不是很容易销售的独立产品。如果我想在一家从事游戏的公司工作,那么在大多数情况下,OpenGL仅会用于为Linux和Android开发以及可能的OSX进行游戏。 Windows和控制台的DirectX <在某些情况下可以替换的Vulkan。
我不能永远支持OpenGL更新,我也不会。但这是我开发的偏好。
评论
$ \ begingroup $
“我对Vulkan的说法还有另一个问题是它声称如何变得更好。” Vulkan不声称是任何东西。这只是一个API;它无法提出索赔。
$ \ endgroup $
–尼科尔·波拉斯(Nicol Bolas)
16 Jun 9 '15:18
$ \ begingroup $
您是否意识到Vulkan和GL是由大多数人制造的?
$ \ endgroup $
–丹·赫尔姆
16年6月11日,0:03
$ \ begingroup $
是的,我愿意。我还是喜欢GL
$ \ endgroup $
– Parabolah
16年6月11日,0:04
#8 楼
我在C ++中自学成才,没有任何正规的教育,并且在过去的15年中,我已经通过Modern OpenGL和DirectX 9c,10和11学习了OpenGL 1.0。在Vulkan尝试一下。我仅完成了一些基本的教程,即可使用Vulkan绘制一个简单的三角形或一个简单的旋转立方体。与DirectX 11和OpenGL 3.3+一样,我已经编写了可以正常工作的3D游戏引擎,甚至使用它们来构建简单的游戏。在学习。如果您只是进入3D图形编程,那么我想说的是入门者可以使用OpenGL或DirectX 11,因为那里有大量的教程,资源,示例以及已经可以运行的应用程序。学习3D图形绝不是一件容易的事情。数据集,数据结构和算法;在尝试构建3D游戏引擎或有效使用现有的3D游戏引擎之前,您首先需要了解和理解很多知识。现在,如果您已经了解所有数学和理论在它后面,您将拥有一些编程经验,可以使用已有的API,库和应用程序(例如Unity或Unreal Engine),只需编写使应用程序正常工作所需的源代码和脚本。因此,从我自己的理解和我的看法来看,如果您只是想开发一款游戏,那么这就是您想要的。与已经存在的框架一起使用,将使您的生产时间大大缩短。另一方面,如果您想了解游戏引擎/物理引擎/动画引擎和模拟器是如何设计的并且需要自己构建,请在其中选择DirectX等API, OpenGL或Vulkan。这里的决定因素之一也将是您现有的编程知识。我的意思是,如果您对多线程,同步与异步调用,内存隔离,数据竞争,信号量和并行性(并行编程)一无所知,那么我建议您远离Vulkan并坚持使用我之所以提到DirectX 11或OpenGL版本3.3-4.x。 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,但我为他们建议的是:首先学习足够的OpenGL和/或DirectX,以使您完全了解基础应用的结构渲染一个简单的三角形或旋转的立方体。熟悉它们的API及其结构的重复模式。在学习可以并行学习Vulkan的同时,您可以看到这三者如何完成相同的任务,但是知道它们是如何做的不同,那么您还可以比较不同API之间的结果然后,您可以选择自己偏爱的哪个。此方法还将在工具箱中提供另一个工具,您甚至可以编写应用程序以支持全部3种应用程序,并让“用户”选择在应用程序启动时选择哪个Renderer。最后,这取决于该人选择要走的那条路,从那里开始,他们的成功将取决于他们的奉献精神,不断学习,努力,尝试和错误,最重要的是他们的失败。如果您没有失败,那么您就不会成功!只有当您失败,发现错误,纠正错误,继续前进并重新站起来再做一次时,您才能成功!
#9 楼
您应该首先在众多平台上学习OpenGL,因为这是Graphics的标准。行业非常重要...尤其是自从Vulkan一段时间以来不会在大公司中使用。不稳定的Framework / Library。他们将需要聘用/重新培训其现有的Open-GL程序员,而且也不需要这样做。我们听说OpenGL和Vulkan并不完全相同。我听说Vulkan是比OpenGL更底层的API,并且比OpenGL更接近机器代码。 /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高管以及Mantle基地;但是,就像任何软件一样,我们的编码人员从一开始就将看到它的运行状况,但是许多人都在警惕并等待发生什么。
评论
$ \ begingroup $
Vulkan现在很稳定。您的GL 1.0 vs 2.0类比是恰当的。现在开始使用GL就像在GL 2.0推出六个月之后开始学习GL 1.0一样。
$ \ endgroup $
–丹·赫尔姆
16年6月9日在8:15
$ \ begingroup $
Vulkan可能是“稳定的”,这并不意味着事情不会改变,这是语言的本质,我在过去几年中对语言进行了2次最新更改,因此我们怎么知道这不会到Vulkan?您基本上是在说学习OpenGL是浪费,这是错误的。使它看起来像OpenGL已经死了,将不再使用...也是错误的。此外,我并不是唯一相信Vulkan可能存在稳定性问题的人。可能没有,但是有了任何新语言,这就是您要寻找的。
$ \ endgroup $
–鲍小玲
16年6月9日在16:07
$ \ begingroup $
当然,情况将会改变,工作组已经在为下一个规范版本开发新功能(ssh,您没有从我那儿听到)。稳定意味着这些内容将添加到规范中,并且您今天所了解的内容将在两年后仍然有效。 OTOH,您今天对GL的了解已经与GPU的工作方式相差甚远:就像了解可编程着色器世界中的固定功能管线一样。如果您阅读了我的答案,就会发现我不认为现在学习GL并不是浪费。但是“ Vulkan太新了”并不是打折的好理由。
$ \ endgroup $
–丹·赫尔姆
16年6月9日在16:13
$ \ begingroup $
@Lasagna:“这是不断变化的,没有多少公司会适应于立即使用它。” Valve。史诗。统一。他们全都投入巨资使他们的发动机在Vulkan上运转。 CryTech和Id也不完全忽略它。因此,您的陈述与事实不相称。
$ \ endgroup $
–尼科尔·波拉斯(Nicol Bolas)
16 Jun 9'17:37
$ \ begingroup $
@Lasagna:“仅仅因为它已被改编成3D引擎,并不意味着公司正在向其投资项目”。那么3D引擎不符合“项目”的资格吗? DOTA2是否算作“项目”?因为它现在已经支持Vulkan。三星的智能手机和平板电脑产品线是否算作“项目”?因为他们正在考虑将其合并到UI中。现实情况是,如果该平台能够满足他们的需求,那么很多人都愿意“成为测试新平台的人”。
$ \ endgroup $
–尼科尔·波拉斯(Nicol Bolas)
16年6月9日在22:30
评论
如果您可以在一个API中执行某项操作,则可以在任何其他API中执行,只是其执行方式取决于该API。