我如何使用最新的OpenGL?

时间:2010-07-22 13:57:22

标签: c++ opengl

这个主题很新,在大学里,每次我们需要时都会提供.dll。但我从来不知道我使用的是什么实际版本,我正在使用哪些扩展......说实话,这非常令人困惑。我在官方khronos网站上找不到任何下载链接。单击OpenGL SDK链接,只会向我提供更多文档。 我已经习惯了DirectX,这很清楚你正在使用什么版本。 (通过您创建的设备)。

  1. 我今天如何开始使用OpenGL 4.0?
  2. 如何启用扩展程序?
  3. 我如何知道我的机器能够使用哪种版本的OpenGL?
  4. 4.0中发生了什么重大变化?我认为我不需要关心旧版本,因为我将OpenGL编码仅仅用于教育目的至少两年。

3 个答案:

答案 0 :(得分:11)

OpenGL不是具有不同版本号的库,等等。相反,它是图形驱动程序必须自己支持的一个重要标准。因此,某些显卡可能不支持最新的OpenGL版本,而将来某些显卡可能不支持旧版本。

如果使用OpenGL 1.0或使用OpenGL 4.0,则无需在不同的库中包含不同的标题或链接。但是,要使用OpenGL 4.0,您必须检测程序运行的计算机是否支持它。目前,只有非常新的GPU支持OpenGL 4.0。你可能有更好的机会使用OpenGL 3.0

如果您使用的是Windows,请输入“gl / gl.h”并将程序与“OpenGL32.lib”链接

程序启动后,您可以检测GPU支持的OpenGL版本,或使用glString和wglGetProcAddress启用扩展。但是我强烈建议您使用第三方库(GLee是我最喜欢的)。

使用OpenGL进行编程与使用DirectX进行编程完全不同。 DirectX保证支持您正在使用的版本的所有功能。当您使用OpenGL编写代码时,您应该单独检测每个功能。

例如,假设您要使用顶点缓冲区。你的代码应该是这样的:

  • 如果OpenGL版本> = 2,则使用glGenBuffers,glBindBuffer等。
  • 否则,在RAM中分配和填充数据

您可以在我上面链接的GLee页面中看到一些示例

当然,你无法做到这一切。例如,着色器无法在没有特定扩展名的情况下完成,如果它们不可用,您应该只显示错误消息。

更复杂:从OpenGL 3开始,一些功能已被弃用。您现在有两种方法来初始化OpenGL:

  • 新方法(Windows上的wglCreateContextAttribsARB),您可以在其中精确定制所需的最小OpenGL版本
  • 旧方式(wglCreateContext)请求最少的OpenGL 1.1(最新版本也可访问)

如果您要求的版本优于OpenGL 3,则不推荐使用已弃用的功能,这要归功于卡可能支持或不支持的扩展ARB_compatibility。目前,所有现有GPU都支持ARB_compatibility,但将来可能不再如此。

如果您要求的版本低于OpenGL 3,则这些函数不会被视为已弃用,但如果卡不再支持初始化,则会失败。

答案 1 :(得分:3)

我今天如何开始使用OpenGL 4.0?

简单回答:今天,这可能很难。几乎没有支持OpenGL 4.0的商品硬件,而且规范本身仅在四个月前发布。

如何启用扩展程序?

使用GLEWGLee等解决方案。

我如何知道我的机器能够使用哪种版本的OpenGL?

见答案2,两个包都提供了这些信息。

4.0中有什么重大变化吗?我认为我不需要关心旧版本,因为我将OpenGL纯粹用于教育目的至少还有2年。

你肯定需要关心“旧”版本,请参阅答案1,特别是因为即使OpenGL 3.x支持现在也没有。

有关更多信息,您可能需要查看以下问题:How many users could run software that uses OpenGL 3.x?

答案 2 :(得分:0)

在OpenGL 1.2之后,必须通过供应商提供的图形卡界面加载所有扩展(如果您使用的是Windows)。为了使这些卡能够开发程序员仍然可以访问的功能,他们使用OpenGL标准。

你需要包含你应该能够轻松找到的GL / gl.h,你可以链接到opengl32.a或者你的opengl库。这为您提供了非常基本的功能。

如果你想使用大多数功能,超过1.2的任何功能,你需要为你想要使用的每个功能做一些非常特别非常烦人的扩展加载调用,或者只是抓住glew或者GLee。我几乎都用过,不确定我喜欢哪个。 GLee有点轻,我非常喜欢它,但是GLEW已经有了OpenGL 4,而且它们都非常稳固,所以我现在可能已经知道了。

无论如何这是几个月之后,如果你开始在opengl 3.1+ / 4环境中开发,有越来越多的gl4卡,现在你可以在一年之后将它部署到大多数游戏或工作站计算机上。一半肯定。