初学者学习OpenGL -这些OpenGL工具是什么
Beginner to learning OpenGL - what are these OpenGL tools?
我想开始学习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.
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 了解 GLM- openGL 中的相机转换
- 如何在全屏模式下(在OpenGL中)使背景透明
- 为什么我不能使用 EGL 创建无头 OpenGl 上下文?
- OpenGL大的3D纹理(>2GB)非常慢
- OpenGl glm rotate
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- OpenGL在启用深度测试时不会丢弃我的碎片
- OpenGL相机和相机空间转型的困惑
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- 在clang++预处理器中确定gcc工具链版本
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 参数化自定义CMake工具链
- OpenGL将纹理四边形渲染为(0,0)
- OpenGL 和 GLM 矩阵无法正确扩展,总是按比例缩小
- 如何在QT中的自定义视频小工具t上绘制矩形
- 基于Qt的OpenGL上下文命令行工具
- D3D11中是否有与OpenGL glVertexAttrib()等效的工具
- 初学者学习OpenGL -这些OpenGL工具是什么
- OpenGL中的GUI工具包