我正在使用 Visual Studio 2010 运行 Windows 7。包含的 OpenGL 版本 (#include ) 是版本 1.1,我希望使用合理的当前版本 - 某种版本 3 或 4。
我需要做什么才能达到该状态? OpenGL SDK 页面位于http://www.opengl.org/sdk/ http://www.opengl.org/sdk/似乎说你不允许下载 SDK,OpenGL wiki 位于http://www.opengl.org/wiki/Getting_Started http://www.opengl.org/wiki/Getting_Started表示您应该已经拥有它,如果您没有它,它会引导您到可以下载显卡制造商的 DLL 的站点。但我当然不需要为我将要使用的每张显卡构建不同版本的游戏。
StackOverflow 似乎也没有任何内容,至少没有以我可以遵循的方式表达。我只想要一个可以运行的安装程序的下载链接,这将为我提供一个相当最新的 OpenGL API...我在哪里可以获得它?
Update:OpenGL 似乎有某种不涉及 SDK 的特殊习惯——即 .DLL、.lib 和标头的包。我正在使用 DirectX,确实如此。 (事实上,DirectX SDK 甚至包含文档!)
首先OpenGL不是一些集中管理的库和实现(与DirectX相反),这就是为什么你不能下载theSDK,因为OpenGL不是这样工作的。 OpenGL 本身只是一堆描述驱动程序提供且程序可以使用的 API 的文档。然而,API 的实际实现是在操作系统的上下文中进行的。如果您希望 API 独立于操作系统,那么事情就会变得有点困难。 DirectX 很简单,因为它只针对一种特定操作系统而设计。该操作系统是 Windows,这意味着可以针对底层操作系统的某些部分编写 DirectX。这使得 SDK 的开发变得易于管理。
那么OpenGL会做什么呢?好吧,它要求操作系统的某些部分足够慷慨并可供程序使用。在最简单的形式中(事后看来,这将是更好的选择,因为它可以节省很多像您这样的问题),这个界面将只提供一个功能:GetProcAddress
。对于 OpenGL 规范中找到的每个函数,您都可以通过该函数获得指向 OpenGL 驱动程序中实际内容的指针。但是,尽管大多数程序员很懒,他们还是选择了简单的方法并说:“哦,好吧,OpenGL 的当前规范为 1.1 版本,我们在接口库的表面上公开所有 OpenGL-1.1 怎么样?以及我们通过要加载的扩展公开后出现的所有内容GetProcAddress
;毕竟会有多少新功能……”。结果是:很多。
无论如何,每个为操作系统提供支持的编译器都应该为操作系统附带的每个 API 提供接口库。对于 Windows 来说是 OpenGL-1.1。如果您想要 OpenGL 接口库的实际版本提升,那就意味着操作系统更新。但这与 DirectX 并没有太大不同,新的 DirectX 版本随操作系统更新一起发布。只是微软没有看到支持OpenGL的理由。所以OpenGL-1.1是表面可见的,我们必须处理它。由于它包含在编译器附带的内容中,因此没有理由提供实际的 SDK 来下载,因为所需的一切都已在您的编译器安装中。
好的,那么如何从中获取这些功能later那么OpenGL的版本呢?出色地:GetProcAddress
。这是官方的做法。因为实际细节取决于所讨论的操作系统,但 OpenGL 是独立于操作系统的,因此根本不可能确定的OpenGL SDK。所以正式你要做的是:
- 从以下位置下载更高版本的 OpenGL 标头http://opengl.org/registry http://opengl.org/registry
- 对于要使用的每个函数,定义一个函数指针变量来保存它
- 使用加载函数指针
GetProcAddress
当然,如果您只想使用现代 OpenGL,这是相当乏味的。因此,有些人开发了第三方工具来为您完成这项工作。对于程序员所关心的一切,这些工具的行为与 SDK 非常相似。迄今为止最受欢迎的选择(但不幸的是,就 OpenGL 的前沿而言,它并不是完全没有问题)是 GLEW。使用 GLEW 非常简单。我建议使用静态链接:
- 从以下位置下载 GLEWhttp://glew.sourceforge.net http://glew.sourceforge.net
- 将 glew.c 和 glew.h 与项目源文件放在一起。
- 将glew.c添加到编译源列表中;确保有
GLEW_STATIC
预处理器宏定义被配置到您的项目全局编译器标志中。
- Use
#include "glew.h"
代替#include <GL/gl.h>
- 在程序调用中创建 OpenGL 窗口之后
glewInit()
现在给你一些建议:你真的应该学会read文档(不仅仅是浏览)。我刚刚写的所有内容都在您链接的参考文献中进行了说明。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)