Jam*_*s C 2 c++ opengl material
我想开始学习OpenGL,在用C++语言编写的软件中使用它.我在尝试学习新东西时所做的自然就是获取适当的文献和在线教程.
然而,使用OpenGL,我陷入困境.我检查的不同文献和教程几乎立即提到了术语,例如:
即使我检查了这些工具或wiki条目的网站,我仍然不明白这样的事情:它们实际上与OpenGL有什么关系,为什么使用一个而不是另一个,它们有什么共同点,有什么区别. ..也许最重要的是,我如何找到我(不需要)的东西?
所以我非常想听听有关这个主题的解释.参考适当的在线阅读也很好.谢谢.
开放图形库(OpenGL)是一种跨语言,跨平台的应用程序编程接口(API),用于渲染2D和3D矢量图形.因此,它仅提供绘制基本图元(如点,线,三角形)的方法,但不提供高级功能.让我们一起完成你的清单:
" 非官方的OpenGL SDK " 
这只是一个库的集合,提供一些(或多或少)经常需要的功能,如加载图像文件,或使用3D对象,或帮助库来创建和管理OpenGL上下文(它确实包括一些你提到的其他库,我们就是这样.)我不建议将该SDK用作初学者,但只是学习基础知识并仔细选择你想要使用的其他库.
OpenGL着色语言(缩写为:GLSL或GLslang)是一种基于C编程语言语法的高级着色语言.
这不是一个单独的工具,而是现代OpenGL的核心概念.您将需要它来编写着色器(现代GL中需要它).这是你必须要学习的东西,但是这种语言的编译器附带你的GL实现,所以这不需要你单独安装.
FreeGLUT,GLFW,SFLM
 
正如我已经说过的,OpenGL是与平台无关的.一个人仍然需要一个特定于平台的API来实际创建OpenGL上下文并将它们"连接"到窗口(或平台上的任何"drawables").OpenGL甚至没有"窗口"的概念,因此,也没有输入事件处理的手段,检测窗口大小调整.这些库为那些特定于平台的GL绑定API以及窗口和事件管理实现了包装器,因此您可以创建OpenGL上下文和合适的窗口,而无需关心所有这些特定于平台的详细信息.FreeGLUT和GLFW非常注重为OpenGL开发提供简单的框架,而SFML是一个更通用的多媒体框架(也支持音频输出等),并且能够创建OpenGL上下文和窗口.其他这样的库将是SDL(通常用于游戏)或支持OpenGL小部件的Qt.
GLEW是"OpenGL扩展争吵者"的缩写.这是一个OpenGL加载库.OpenGL是一个可扩展的API.因此,您的应用程序执行的机器上可能存在或可能不存在功能.此外,在某些平台上定义OpenGL的方式,只保证库中导出一组特定的函数.如果您需要更新版本的功能,则必须使用扩展机制.这意味着,不必在链接时直接链接函数,而是必须查询函数指针_runtime_以获取对这些函数的访问权限.为了简化该过程,存在像GLEW这样的加载程序库.使用GLEW,您需要做的就是调用glewInit(),然后您可以根据需要使用任何GL函数(只要实现支持它),忘记扩展机制的所有细节.
你真正"需要"这个清单:GLSL,但那不是一个工具.其他的东西是为了方便,但我强烈建议使用一些独立于平台的窗口和上下文管理库(GLFW非常轻量级,但很难说你需要什么.对于学习OpenGL,GLFW肯定是一个不错的选择.)以及像GLEW这样的GL装载机.