初学者学习OpenGL -这些OpenGL工具是什么

Beginner to learning OpenGL - what are these OpenGL tools?

本文关键字:OpenGL 工具 是什么 这些 学习 初学者      更新时间:2023-10-16

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

然而,使用OpenGL,我陷入了困境。我查阅过的不同文献和教程几乎都会立即提到这些术语,比如:

    非官方OpenGL SDK
  • GLSL
  • FreeGLUT
  • SFLW
  • GLEW
  • GLFW
  • 别人…

即使我检查了这些工具的网站或维基条目,我仍然不明白这样的事情:它们实际上与OpenGL有什么关系,为什么使用一个而不是另一个,它们有什么共同之处,有什么不同……也许最重要的是,我如何找到我(不)需要的东西?

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

Open Graphics Library (OpenGL)是一个用于渲染2D和3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。因此,它只提供了绘制基本原语(如点、线、三角形)的方法,但没有高级功能。让我们浏览一下你的列表:

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

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

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

  • GLEW是"OpenGL extension wrangler"的缩写。这是一个OpenGL加载库。OpenGL是可扩展的API。因此,在执行应用程序的机器上可能存在也可能不存在这些特性。此外,OpenGL在某些平台上的定义方式,只保证库导出特定的一组函数。如果需要新版本的特性,则必须使用扩展机制。这意味着,您必须在运行时查询函数指针以访问这些函数,而不是在链接时直接链接函数。为了简化这个过程,确实存在像GLEW这样的加载器库。使用GLEW,你所需要做的就是调用glewInit(),然后你可以随心所欲地使用任何GL函数(只要它被实现支持),忘记所有这些扩展机制的细节。

你真正需要的是:GLSL,但它不是一个工具。其他东西是为了方便,但我强烈建议使用一些与平台无关的窗口和上下文管理库(GLFW非常轻量级,但很难判断您需要什么)。对于学习OpenGL, GLFW肯定是一个不错的选择),也有一些GL加载器,如GLEW.