首先需要了解的是,OpenGL只是一组与GPU交互的方法规范。如果你使用的是Windows或Linux系统,GPU供应商将提供一个带有该规范实现的驱动程序。如果你使用的是OSX系统,则该实现已经包含在操作系统中。要使用OpenGL,你需要一个OpenGL上下文。它本质上是一些内存,将保存OpenGL内部状态机的当前状态。要创建这样的上下文,你应该使用像glfw或freeglut这样的绑定库。然后你需要访问OpenGL方法。在Windows上,你可以使用opengl32.dll库仅访问遗留的OpenGL1.1!如果你想使用现代OpenGL,你需要获取由驱动程序公开的函数指针。有几个加载库可用于此。我认为最常见的是glew。OpenGL允许GPU供应商提供自定义扩展规范。您可以像检索普通OpenGL函数一样检索这些函数。再次强烈建议使用glew,它也是一个扩展库。然后,您需要一个头文件来拥有所有这些函数的原型。但实际上glew也处理了这个问题。
针对每个操作系统所定义的OpenGL支持,只有一个非常特定的子集或版本被定义为严格要求。对于Windows,它是OpenGL-1.1,对于Linux根据LSB-4规范,它是OpenGL-1.2(根据LSB-5规范,它是OpenGL-2.1),对于MacOS-X,每个主要版本通常会将其推进到OpenGL版本,即当特定版本的OS-X开发开始时,该版本是最先进的(这解释了OpenGL版本发布和其在OS-X中支持之间的滞后)。除了已固定在操作系统ABI规范中的版本外,程序不需要提供其他任何内容。这意味着,在Windows上运行的程序可能不希望看到除OpenGL-1.1之外的任何内容得到支持。或者在Linux上是OpenGL-1.2。超出这些版本的任何内容都是纯粹可选的,并且必须在运行时检查其可用性,并动态解析所有所需的函数入口点。OpenGL加载器正是这样做的:它们检查实际支持的OpenGL版本配置文件,并将所有实际可用的函数加载到程序员可访问的符号中;当然,如果在初始化后发现不支持这些函数,则不能使用这些函数。