Windows中的OpenGL

时间:2015-06-06 17:52:19

标签: opengl mesa

  1. Windows仅提供了GL v1.1;如何下载最新版本的OpenGL二进制文件(+听众)以开始在Windows中编码,以及在哪里找到它们?
  2. 哪个版本的OpenGL是所有三个MacOS,Linux和Windows平台完全支持的最新版本?

3 个答案:

答案 0 :(得分:0)

OpenGL是一个开放的标准。最新版本取决于您为GPU安装的驱动程序。

要使用高于1.1的opengl,你需要glew(它暴露了你的驱动程序支持的功能)和一个用于创建上下文的框架:

GLFW, 供过于求 SDL

等等。

目前最新的OpenGL实施:4.5

答案 1 :(得分:0)

  1. 一般来说,OpenGL wiki拥有为您的平台(操作系统和显卡)下载最新OpenGL的所有链接。特别是对于Windows,如果你使用的是Visual Studio,NuGet包管理器有一个很好的预先打包的OpenGL发行版叫做'nupengl.core'。

  2. Arctic所述,4.5是最新标准。是否受构建支持取决于显卡,而不是操作系统。

答案 2 :(得分:-1)

没有针对Windows的更新SDK,仅提供了用于OpenGL 1.1的gl.h。要在Window OpenGL中使用其他功能,您必须使用扩展标头glext.h。这可以从Khronos获得,并在新扩展可用时更新。您可以使用wglGetProcAddress获取函数指针,以便在更高版本的GL(或扩展)中使用。获取其他功能的过程因平台而异。例如,如果您使用的是X11,则可以使用glXGetProcAddressARB,如果您的平台上有EGL,则可以使用eglGetProcAddress

根据平台和SDK,如果平台提供更新的GL SDK,您可以在#define GL_GLEXT_PROTOTYPES之前简单glext.h。显然,由于Windows不提供更新的SDK,因此不可能实现,但它适用于Linux,Mac,iOS和Android。在这两种方法中,您需要确保您使用的GL上下文支持核心API中的函数,提供该函数的扩展(参见glGetString with { {1}})),您构建的SDK包含该功能是不够的。因此,使用'运行时链接'GL_EXTENSIONS方法有点安全,因为如果函数不可用,它将只返回glGetProcAddress。使用不可用的函数将导致未定义的行为,并且可能会崩溃。

对于任何给定平台支持的最新版本,这取决于您的视频驱动程序,而不是您构建的SDK。当您创建OpenGL上下文时,NULL w / glGetString将指示您的上下文支持哪个版本的OpenGL,无论您使用哪个版本的GL SDK。您可以使用版本保证的任何功能,以及报告的扩展提供的任何功能。