【问题标题】:Beginner to learning OpenGL - what are these OpenGL tools?初学者学习 OpenGL - 这些 OpenGL 工具是什么?
【发布时间】:2014-03-17 20:05:49
【问题描述】:

我想开始学习 OpenGL,在用 C++ 语言编写的软件中使用它。当我尝试学习新东西时,我自然会做的是获取适当的文献和在线教程。

然而,使用 OpenGL,我被卡住了。我查过的不同文献和教程几乎立即提到了术语,例如:

  • 非官方 OpenGL SDK
  • GLSL
  • FreeGLUT
  • SFLW
  • 闪烁
  • GLFW
  • 其他...

即使我检查了这些工具的网站或 wiki 条目,我仍然不明白以下内容:它们实际上与 OpenGL 有什么关系,为什么使用一个而不是另一个,它们有什么共同点,什么是差异......也许最重要的是,我如何找到我(不需要)需要的东西?

所以我非常想听听关于这个话题的解释。参考适当的在线阅读也很好。谢谢。

【问题讨论】:

    标签: c++ opengl


    【解决方案1】:

    开放图形库 (OpenGL) 是一个跨语言、跨平台的应用程序编程接口 (API),用于渲染 2D 和 3D 矢量图形。因此,它只提供了绘制基本图元(如点、线、三角形)的方法,但没有提供高级功能。让我们来看看你的清单:

    • 非官方 OpenGL SDK
      这只是提供一些(或多或少)经常需要的功能的库的集合,例如加载图像文件,或使用 3D 对象,或用于创建和管理 OpenGL 上下文的辅助库(它确实包括您提到的其他一些库,我们即将开始。)我不建议将 SDK 作为初学者使用,但只需学习基础知识并仔细选择要使用的其他库。

    • OpenGL 着色语言(简称:GLSL 或 GLslang),是一种基于 C 编程语言语法的高级着色语言。
      这不是一个单独的工具,而是现代 OpenGL 的核心概念。你将需要它来编写你的着色器(现代 GL 需要它)。这是你绝对必须学习的东西,但是这种语言的编译器是随你的 GL 实现一起提供的,所以你不需要单独安装。

    • FreeGLUT、GLFW、SFLM
      正如我已经说过的,OpenGL 是独立于平台定义的。仍然需要一个特定于平台的 API 来实际创建 OpenGL 上下文并将它们“连接”到窗口(或平台上的任何“可绘制对象”)。 OpenGL 甚至没有“窗口”的概念,因此也没有用于输入事件处理、检测窗口大小调整的手段。这些库为那些特定于平台的 GL 绑定 API 以及窗口和事件管理实现了包装器,因此您可以只创建一个 OpenGL 上下文和一个合适的窗口,而不必关心所有这些特定于平台的细节。 FreeGLUT 和 GLFW 非常专注于为 OpenGL 开发提供一个简单的框架,而 SFML 是一个更通用的多媒体框架(也支持音频输出之类的东西)并且能够创建 OpenGL 上下文和窗口。其他此类库包括 SDL(通常用于游戏)或支持 OpenGL 小部件的 Qt。

    • GLEW 是“OpenGL 扩展管理员”的缩写。 这是OpenGL loading library。 OpenGL是可扩展的 API。因此,执行应用程序的机器上可能存在也可能不存在特性。此外,在某些平台上定义 OpenGL 的方式,只能保证某些函数集被库导出。如果您需要较新版本的功能,则必须使用扩展机制。这意味着,您必须在 runtime 查询函数指针以访问这些函数,而不是在链接时直接链接函数。为了简化该过程,确实存在诸如 GLEW 之类的加载程序库。使用 GLEW,您只需调用 glewInit(),然后您就可以使用任何您喜欢的 GL 函数(只要它被实现支持),而无需考虑扩展机制的所有这些细节。

    此列表中您真正“需要”的是:GLSL,但这不是工具。其他的东西是为了方便,但我强烈建议使用一些独立于平台的窗口和上下文管理库(GLFW 是相当轻量级的,但很难说你需要什么。对于学习 OpenGL,GLFW 肯定是一个不错的选择。)还有一些像 GLEW 这样的 GL 加载器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多