首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为跨平台桌面应用程序选择哪种OpenGL版本

为跨平台桌面应用程序选择哪种OpenGL版本
EN

Stack Overflow用户
提问于 2011-03-31 19:50:35
回答 5查看 2.5K关注 0票数 7

我正在开发一些跨平台的桌面应用程序,其中包含大量的2-D图形。我使用OpenGL 2.0规范,因为我需要顶点着色器。我喜欢3.2+核心API,因为它的简单和强大。我认为3.2+核心可能是未来的选择。但是我担心现在这个功能可能在一些平台上不可用(我是指旧的显卡和缺乏(?)现代Linux驱动程序)。也许,我应该使用OpenGL ES 2.0 -like API来简化将来的移植。

3.2+内核、显卡和linux驱动程序的现状如何?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-06-15 18:09:48

较早的英特尔芯片仅支持OpenGL 1.5。后来的芯片(大约从两年前开始)有2.1,但性能比1.5更差。Sandy Bridge声称支持“Linux3”,但没有具体说明它是否能够支持3.3 (达蒙建议的那样),但OpenGL驱动程序目前只能支持2.1。所有最新的带有闭源驱动程序的Radeon和Nvidia硬件都支持3.3 (几何体着色器)和400-500系列支持4.1 (细分着色器)。

因此,你想要瞄准的版本是1.5 (如果你关心pre-Sandy-Bridge Intel垃圾),2.1 (对于几乎所有的硬件),3.3 (对于像样的硬件和闭源驱动程序)或者4.1 (尖端)。

我有用#版本120编写的顶点着色器和片段着色器,以及用#版本330编写的几何着色器,以便更容易在旧硬件上进行回退。

票数 6
EN

Stack Overflow用户

发布于 2011-06-16 06:03:44

您可以继续使用OpenGL ES 2.0。即使ES意味着嵌入,它也是一个很好的方法,因为它删除了所有固定的函数(glBegin等):您正在使用OpenGL 2.x的一个子集。因此,如果您只考虑OpenGL ES 2.0来编写您的软件,那么它将是快速的,并且可以在大多数情况下工作。

在现实中,OpenGL ES 2.0和桌面GL可能会有一些不同,但我认为你不会使用它。如果支持扩展GL_ARB_ES2_compatibility,您就拥有了一个支持完整嵌入子集的“桌面”卡。(4个函数和一些常量)

现在,真正的问题是您希望支持多少年的硬件?它们仍然是很多非常旧的硬件,对gl的支持非常差。最好是支持不太旧的(OpenGL 2.0已经很旧了) :)

票数 6
EN

Stack Overflow用户

发布于 2011-03-31 20:23:20

我个人会选择OpenGL 3.3,可选的是3.2 +扩展(这基本上是相同的)。它是使用OpenGL 3.x最方便的方式,并且得到了广泛的支持。

将目标定在3.1或3.0不再值得,除非你真的想在sandy bridge上运行(由于某种模糊的原因,它只支持3.0,尽管硬件可以很好地支持3.3)。此外,3.1和3.0在着色器代码中有很大的变化,在我看来,如果你想支持许多版本,这将是一个维护噩梦( 3.2和3.3没有这样的问题)。

每个支持3.2的硬件也可以支持3.3,唯一的障碍可能是IHV不提供最新的驱动程序,或者用户太懒而不愿更新。因此,您不能假设"3.3适用于所有地方“。不过,较旧的驱动程序通常会通过ARB扩展具有相同的功能。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5499351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档