OpenGL版本支持,转换和使用

时间:2015-08-08 10:50:23

标签: opengl

据我所知, OpenGL 3 于2008年发布,它有一个引人注目的API更改,如果您的计算机/ GPU太旧,则不支持它。 例如,我知道 OpenGL 3 API在我的GPU上不起作用(我的计算机是在2009年购买的,它有 ATI Mobility Radeon HD 4530 )。

我的问题是:

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

1 个答案:

答案 0 :(得分:1)

1)无法直接转换OpenGL 3.x或4.x代码,因此它将在仅支持GL2的系统上运行,除非您愿意编写很多的仿真代码。
不仅范式是不同的(这确实很容易做到,例如存在OpenGL3的立即模式库,可以想象相反,并且具有可以被映射的缓冲对象的类"并且"取消映射"并且会发出大量glVertex次呼叫。硬件还支持很多功能作为渲染管道的一部分,它们不会出现在旧硬件中(例如实例化,几何着色器,细分)。其中一些(例如,实例化)更难以模仿,其他更难(地理着色器)。当然,通常可以以某种方式模拟所有,但这是一项非常多的工作,它只是没有意义。

2)您的计算机可能能够运行使用OpenGL 3的软件,前提是您拥有支持此功能的软件仿真层。 MESA同时支持OpenGL 3.1,因此这将是"是" (此外,nVidia曾经有过某种"调整工具"这将允许一些GPU使用他们并不真正支持的功能,通过仿真...但我怀疑这包括一些东西比如完整的GL3支持,无论如何也不适用于ATI卡。) 否则,答案当然是:否。

3)这取决于。很难分辨出什么"大多数"做。但无论如何这有关系吗?你需要做适合你的应用的东西,而不是那些"大多数"这样做。
对于人们在下班回家途中在手机上玩的糖果粉碎瓷砖和精灵游戏,GL2(或ES)非常适合。做类似事情的开发人员将使用旧的API,因为它可以正常工作,并且可以在很短的时间内完成运行。 大多数其他人都不会因为不仅要求更苛刻的应用程序的性能更差,而且还没有着色器和其他非常有用的功能。此外,几乎所有合理当前硬件至少支持GL3。

GL3硬件至少可以使用两位数的低两位数货币,GL4硬件也可以在一段时间内以此价格购买。我已经讲了五年了(我可能错了,但这是我的观点)如果有人不能或者不想买得起20美元的新卡,那么他们也不会为你的软件买单。所以他们不是严肃的"我想考虑的客户。此外,由于缺乏计算能力,无法执行GL3的卡也无法以可接受的帧速率执行大多数操作。这意味着即使这些人 严重,付费客户,他们也会不开心客户,他们会提出大量投诉。
当然,您的方法可能会有所不同,但我的信念是,最好只是远离这些客户。对于不满意的用户来说,这是一个不明智的方法。

OpenGL3具有兼容性配置文件,但如果你问我,这是委员会方面的荒谬决定。虽然nVidia仍然建议只使用兼容性配置文件,并承诺无限期地支持它,并声称它不会运行速度慢但速度可能更快,我不同意这种观点。
虽然启用兼容性配置文件可能是“无害的”#34;并且可能确实不会导致任何性能问题,它允许您故意或无意地使用不能很好地映射硬件如何工作的功能,甚至允许您执行概念上和错误的事情#34;。当您习惯使用旧功能时,使用核心配置文件可能会很痛苦并且看起来不必要限制,但这些限制实际上只能帮助您编写更好的代码。

4)对旧API的了解实际上是相当后悔的。你应该在我的意见中尽快忘记它。遗留API的唯一优势在于,将第一个三角形带到屏幕上非常简单(使用GL3的大约40行代码已经是一个挑战)。但是,一旦你想做一些更进一步发展的事情,GL3 / GL4最初的高门槛根本不再重要。反之。一旦你习惯了它,就可以更容易地在驱动程序中抛出一个间接绘制命令的整个缓冲区和一个顶点数据的整个缓冲区,并让它通过它进行处理。

如果你还没有开始学习任何东西,只学习现代方法,永远不要回头。幸运的是,Vulkan今年将有一个完整的规格(是的,我是一个梦想家,但人们可以希望!)。这将再次与GL API的外观略有不同。但话说回来,如果你已经习惯了,那么主要是AZDO"风格GL,它不会那么多的变化。