我应该继续学习OpenGL还是只是改用DirectX,让我有更好的机会进入游戏行业?[关闭]


29

我已经使用OpenGL和Linux学习图形编程已有一段时间了。我对大多数概念都很熟悉,但是我真的很想加深我的知识,并最终从事游戏开发,尤其是游戏引擎开发的职业。

到目前为止,在我看来,大多数游戏工作室都使用DirectX为Windows制作游戏。

编辑:我知道之前曾有人问过OpenGL vs DirectX问题,但我没有从我想要的角度找到答案。

编辑2:阅读完所有响应/评论后,我决定继续深入研究OpenGL / GLSL的图形,但是我也会尝试使用DX,只是对API有基本的了解。我要感谢大家为您提供的答案和见解。


这个问题的广义版本可能会在programmers.stackexchange.com上给出一些好的答案……
Macke

1
基本上从来没有做过HLSL的OpenGL家伙都教过DX着色器的一些要点。只要您知道“片段着色器”的意思是“像素着色器”,这些概念就几乎相同; P
drxzcl 2011年

在IIRC中,DirectX在版本8或9中变得有点像OpenGL。在此之前,DirectX有时被批评为不必要地难以使用。API仍然不同,但是一般方法应该非常相似。免责声明-我也不是专家。
Steve314,2011年

@Macke-职业建议与程序员无关。这可能太具体了,但一般的职业问题将是关于@ 专业事务(当前在51区提出)的话题,请继续致力于支持该SE
Chad

即使您进入该行业,您也不会成为图形程序员,因此,即使您知道一个API,另一个API,两个API还是一个都不知道,这几乎没有关系。除此之外,还取决于公司和项目。D3D是在PC领域中更常用的方式,GL | ES在移动领域中是完全占主导地位的,并且控制台都使用您自己无法真正学习的专有API。
肖恩·米德迪奇

Answers:


28

真的没关系。两者的核心概念相同,尤其是现在像素着色器已成为常态。而且由于大多数游戏都是多平台的,因此它们可能会使用两种语言中相似的功能的子集。只要可以在glsl或hlsl中编写着色器,就可以了。

话虽如此,“游戏引擎开发”职位的数量很少。大多数公司都使用现成的东西。对于那些存在的职位,入门级职位甚至更少。大多数入门级游戏程序员不编写任何与图形相关的代码(可能不包括着色器),因为它们都已被抽象掉了。


1
最入门级的程序员做什么?在大型,中型或小型工作室中?
Quazi Irfan 2011年

那是一个单独的问题。 gamedev.stackexchange.com/questions/5538/...
四分

1
只是增加一个更笼统的答案,以我的经验,初级程序员倾向于从游戏性,ui,hud并从那里开始工作,游戏性是一个受欢迎的切入点。
JuniorDeveloper1208 2011年

根据我的经验,资产集成菜单和UI是更常见的切入点。
郊狼

伙计们,让我们不要在这里的评论中开始讨论该特定问题。这些是我所链接问题的完美答案。
四分

10

这完全取决于您想要/将要获得的工作。您可能会想到在DX为王的PC市场上找到一份工作。请记住,大多数AAA公司都是针对API非常明确的控制台市场。

例如,PS3具有其OpenGL ES实施的专有扩展。

OpenGL在移动领域正在增长。现在可以在Windows Phone 7以外的所有现代平台上使用。

当前,只有OpenGL ES可用。但是更多强大的PowerVR芯片将支持OpenGL 4和DX11。

您的OpenGL技能非常出色。您可以重新转换为DX来找到需要的工作。但与此同时,请记住,在可用的设备和平台数量上,OpenGL是王者。


编辑:此外,越来越多的公司倾向于使用现有的引擎,并且甚至甚至越来越多的核心游戏开发人员都从低级别的API中筛选出来。当您遇到特定平台上的错误和奇怪行为时,最好对本机API有所了解。但这全都归结为这些概念,正如其他人指出的那样,核心的DX和OpenGL将需要相同概念的知识。


编辑:由于您已经熟悉OpenGL和着色器,因此您应该尝试OpenCL ...该API有潜力成为并行计算的下一个重要事物。

我之所以提到它,是因为OpenCL内核使用的数据类型可与OpenGL互操作,并且对于OpenGL开发人员而言很容易理解。看一看,看看您是否可以从出色的通用计算解决方案中获得一些经验(例如,当前已集成到子弹物理学中)。


OpenGL是一种行业标准,它启发了其他库和API。您不应该忽略其重要性。但是另一方面,您不应该只停留一件事,如果我是我,我会看看抽象OpenGL和DirectX的高级API和引擎。
郊狼

我熟悉OpenCL。我一直在进行一个辅助项目,构建一个物理引擎(基本的,主要用于学习),我使用了一些OpenCL使其速度更快,但尚未获得惊人的结果(在某些情况下,我什至使情况变得更糟)
2011年

这是一个不错的尝试的迹象;)看一下子弹引擎中的实现。无论如何,祝您的项目顺利。
郊狼

7

我同意,您所学的API并不重要。重要的是要了解基本概念。

在研究游戏开发时,Windows并不是唯一的目标平台。正如我所听到的,Apple正在成长为目标平台,但是这些控制台也非常重要。控制台通常具有自己的专用图形API(我认为这样做是为了打扰我们)。尽管控制台API与OpenGL相比与DirectX有更多的共同点,但这仍然不是很大的区别。

选择适合您的方法。


1
XBox可能会填充DirectX方式...?
Macke,

是的,PS3使用PSGL。但是,X360就像在PC上一样使用DirectX,尽管不确定,但这只是一个猜测。
Quazi Irfan 2011年

我没有在Xbox上体验,但是根据Wikipedia,其API基于DirectX。在PS3上,PSGL只是可用的API之一。
2011年

X360使用接近DX9的API,但有一些奇怪之处,以适应它具有相对少量的相对较快的内存的事实。
drxzcl 2011年

6

游戏开发教授的观点如何?

如果您掌握了OpenGL的基础知识,那么一定可以冒险进入DirectX的世界(请注意进入DX),由于兼容性原因Dx9仍在开发中使用,因为较旧的平台(特别是XP)不支持较新的图形Dx10和Dx11中的管道。(建议您先从Dx9开始,然后注意Dx10和11之间的差异,然后再进行改进),这也将使您更加全面。

理想情况下,您将需要在HLSL和CG上花费一些时间(请注意,这两种看似不同的着色器语言实际上是同一种语言(一种是由Microsoft品牌化,另一种是由Nvidia品牌化),以了解顶点和片段(像素)着色器的工作方式对您和您要工作的任何游戏公司来说都是一笔巨大的财富(假设您在渲染系统或子系统上工作,而不是在AI代码上工作; ;-)

Ogre3D是一个开源渲染引擎,支持两个图形子系统(OpenGL / DirectX),并在许多游戏中使用...由于该源是免费提供的,因此您可能喜欢对其进行挖掘,并通过比较来了解对OpenGL的调用与对OpenGL的调用有何不同DirectX。

我还建议您,因为您已经在OpenGL中花了一些时间,您戳了一下WebGL,看起来它在不久的将来会爆炸。

希望对您有所帮助!


我不会说WebGL将来会爆炸,至少在不久的将来不会爆炸。这是在没有任何插件的浏览器上渲染3d的另一种方法。
Quazi Irfan 2011年

随着主要供应商为其产品(Visual Studio)添加HTML5和JS支持以及Adobe等公司推出Edge(HTML5 JS Flash杀手er),我认为将会看到更多利用硬件加速的基于Web的内容。
罗伯特·法兰西

4

我最近读到约翰·卡马克(John Carmack)推荐DirectX的原因很简单,因为微软在一段时间内一直在追赶openGL,这样做就创造了一种竞争产品,并在OpenGL的同事花时间争论和进行设计时允许DirectX。变得更加优美,并且我相信它更易于使用,但坚持使用openGL。

http://www.tomshardware.com/news/john-Carmack-DirectX-OpenGL-API-Doom,12372.html

也许是考虑您总体上是否喜欢图形的另一种选择,它的含义是嵌入式空间中正在发生的事情。

我使用Linux和WinCE在嵌入式领域工作。我曾经是福特SYNC的架构师(在那里工作了6年),现在我从事通用汽车的CUE(通用汽车对福特SYNC的回答)的工作。福特SYNC不使用openGL或DirectX。福特则选择了Flash&Action脚本;我不确定Flash的功能是什么,但是它慢得要命。JD Powers给它的评分很差。GM的CUE都是Linux和openGL ES,尽管GM CUE拥有更新的iMX处理器,但是Linux上的openGL动画效果却是惊人的。CUE / openGL更快。福特再次通过Adobe Flash破坏了他们的系统。

因此,如果您希望在游戏中做到这一点,但又担心竞争性质,但仍然喜欢这种类型的作品,那么也许可以考虑选择一些可以扩大简历的选择。根据我的经验,至少在嵌入式世界中,WinCE似乎并没有太多地使用DirectX。(WinCE的API与NT的API略有不同可能是该原因的一部分)。OpenGL在嵌入式世界中无处不在,人们正在做更多的事情,例如平板电脑,汽车信息娱乐系统现在很热门,当然还有智能手机……


+1用于提及嵌入式空间。我没有考虑过为嵌入式系统(移动平台除外)使用图形,但经过一些研究后,我发现它是值得考虑的选择。几年前,我的确对嵌入式平台感兴趣,但是其他东西也挡住了,所以我很早就放弃了。
2011年

2

我想说,无论您专业从事哪种工作,都能说出您曾与他们一起工作可能对您的简历很有好处。

我之所以这样说,是因为,与任何事物一样,它更多地是关于通用技术的,而不是超过特定点的API /语法知识。您需要能够做一些事情,并且知道自己的方法,但是您不必在两个API中都实现大量的工作。(那是O(n * m),不会缩放...)。稍微了解API并了解不同的技术(即O(n + m))是有用的,这将有所帮助。

当然,由于在DX中执行“高级”操作也会获得加分,因为它表明您具有更深的API知识,但是无论如何您都需要一些高级技巧,以证明您知道如何连接盒子(忽略您必须说出特殊的魔术字才能完成)。

实际上,任何API(3d或其他)或任何编程语言都是相同的。


1

我发现DirectX较难学习,因此技能更高。Directx通常会从主板制造商那里获得更好的支持,但是,Microsoft不会发布太多更新来利用这些优势(只有部分硬核游戏玩家真正使用这些主板)。关于游戏开发,所有主要的游戏平台都使用自己专有的图形引擎... xbox-> DirectX Box :)了解3D概念,网格,照明,变换等是对所有人相同的技能。


我发现DX9-ish和“现代” openGl(不使用glBegin)之间在概念上几乎没有区别。我希望您能想到为什么其中一个比另一个更“容易”或“更难”。
drxzcl 2011年

1
我实际上发现OpenGL可以更轻松地了解真正的基础知识,但是一旦您转向VBO和着色器,D3D就会变得更加容易(缺少扩展也使其在更广泛的硬件基础上更加一致)。
Maximus Minimus

这也是我的经验,因此是个问题。
drxzcl 2011年

1

如果您知道一个,就可以轻松接起另一个。

如果您知道OpenGL,则可以轻松地为智能手机(Android和iPhone)以及win / Linux / mac进行编程。

DirectX仅是Win / Xbox。因此,除非您要以Xbox为目标,否则我将继续使用OpenGL,因为它可以针对更多平台。


-4

我更喜欢OPENGL。考虑例如,Android的移动操作系统使用OPENGL。有很多基于OPENGL平台开发的游戏引擎。

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.