2015-08-08 100 views
-2

据我所知,OpenGL 3于2008年发布,它有一个戏剧性的API更改,并且如果您的计算机/ GPU太旧,它不受支持。 例如,我知道OpenGL 3 API无法在我的GPU上工作(我的电脑在2009年购买,它有ATI Mobility Radeon HD 4530)。OpenGL版本支持,转换和使用

我的问题是:

  • 是否有某种方式来OpenGL的3/4的OpenGL代码转换成OpenGL的2码?
  • 如果没有,是否意味着我的电脑将无法运行使用OpenGL 3+编​​写的新软件?
  • 大多数图形开发人员是否仍然使用旧的API(即OpenGL 2)来支持较老的机器?
  • 当你已经熟悉旧的API时,研究OpenGL新的API有多难?旧API的知识是否有用?
+1

没有。是。是的(我相信后备图形技术是常见的)。不,是的。 “兼容性”GL配置文件提供了两个功能集,而且我发现了解更多关于旧固定管道的知识,让我了解如何使用GL3重现它。我不会说[shift](http://stackoverflow.com/a/26009113/1888983)是激进的,更多的是为了简化它而删除了一些功能。 – jozxyqk

+0

非常感谢您的回答! – SomethingSomething

回答

1

1)有没有办法直接转换的OpenGL 3.x或4.x的代码,以便它会只支持GL2的系统上,除非你愿意写的仿真代码有很多运行。
不仅仅这些范例是不同的(这确实很容易做到,例如存在OpenGL3的即时模式库,可以想象做相反的事情并且有一个缓冲对象的类可以被“映射”和“未映射”并且会发出很多glVertex调用)。该硬件还支持作为渲染管线的一部分的很多功能,这些功能在较旧的硬件(例如实例化,几何着色器,镶嵌)中不存在。其中一些(例如实例化)模拟更加微不足道,其他模式更难(地理着色器)。当然,通常可以模仿的一切,但是这是非常多的工作,它只是没有意义。

2)您的计算机可能能够运行使用OpenGL 3的软件,前提是您有一个支持此功能的软件仿真层。同时,MESA支持OpenGL 3.1,所以这将是“是”(同样,nVidia曾经有过某种“调整工具”,它允许一些GPU通过仿真使用他们并不真正支持的功能......但我怀疑这包括类似完整的GL3支持,反正它也不适用于ATI卡)。
否则,答案当然是:No.

3)这取决于。很难说“最”是做什么的。但无论如何,它有什么关系?您需要为您的应用程序做正确的事情,而不是“最”的事情。
对于人们在下班回家的路上玩手机的糖果粉碎拼图游戏,GL2(或ES)非常适合。像这样做的开发人员会使用旧的API,因为它可以工作,并且在很短的时间内运行一些东西会更直接。
大多数其他人不会这样做,因为不仅对于要求更高的应用程序来说性能会差很多,而且你也没有着色器和其他非常有用的功能。此外,几乎所有合理目前的硬件至少支持GL3。

GL3硬件已经可以使用至少5年的低两位数货币量,并且GL4硬件也可以在一段时间内用于该价格。我已经说了半年(我可能是错的,但这是我的观点),如果有人不能或不想买20美元的新卡,那么他们不会支付你的软件也是。所以他们不是我想要考虑的“严肃”客户。此外,无法执行GL3的卡片 - 由于缺乏计算能力 - 无法以可接受的帧速率执行大部分操作。这意味着即使这些人都是严重,付费客户,他们会不满意客户谁将会投诉很多。
当然,您的方法可能会有所不同,但我相信最好是远离这些客户。已经为不满意的用户计划是一种不明智的方法。

OpenGL3有一个兼容性配置文件,但如果你问我,这是委员会的一个荒谬的决定。尽管nVidia仍然建议只使用兼容性配置文件,承诺无限期地支持它,并声称它的运行速度不会更慢,但速度可能更快,但我不同意这一观点。
虽然启用兼容性配置文件本身可能是“无害的”,并且可能确实不会导致任何性能问题,但它允许您有意或无意地使用功能不能很好地映射到硬件的工作方式,甚至可以让您执行在概念上是“错误的”。使用核心配置文件可能会很痛苦,并且在您习惯使用旧功能时似乎是不必要的限制,但限制确实只能帮助您编写更好的代码。

4)对旧API的了解实际上是相当有限的。你应该在我的意见中尽快忘记它。传统API的唯一优势在于,将第一个三角形带到屏幕上很简单(这对于使用GL3的约40行代码来说已经有点困难了)。但是一旦你想做一些更进一步的事情,GL3/GL4最初的高门槛并不重要。反之。一旦习惯了它,只需在驱动程序中抛出一个间接绘制命令的缓冲区和一个完整的顶点数据缓冲区并让它通过它就可以了。

如果你还没有开始学习任何东西,只有学习现代的方法,并永不回头。如果运气好的话,Vulkan今年会有一个完整的规范(是的,我是一个梦想家,但人们可以期待!)。这将再次与GL API的外观有些根本不同。但是,如果您已经习惯了“主要是AZDO”风格的GL,那么的变化就不会是