C++ 如何安装当前版本的OpenGL for Windows C++;?
我正在用VisualStudio2010运行Windows7。OpenGL包含的版本(include)是1.1版,我想使用一个合理的最新版本——某种版本3或4 我需要做什么才能达到那种状态?位于的OpenGL SDK页面似乎表示不允许您下载SDK,而位于的OpenGL wiki则表示希望您已经拥有了SDK,如果您没有,它会将您指向可以下载图形卡制造商DLL的站点。但我肯定不需要为我将要使用的每个图形卡构建不同版本的游戏 StackOverflow似乎也没有任何东西,至少没有我可以理解的措辞。我只想要一个下载链接到我可以运行的安装程序,这将给我留下一个合理的最新OpenGL API。。。我到哪里去拿C++ 如何安装当前版本的OpenGL for Windows C++;?,c++,windows,api,opengl,C++,Windows,Api,Opengl,我正在用VisualStudio2010运行Windows7。OpenGL包含的版本(include)是1.1版,我想使用一个合理的最新版本——某种版本3或4 我需要做什么才能达到那种状态?位于的OpenGL SDK页面似乎表示不允许您下载SDK,而位于的OpenGL wiki则表示希望您已经拥有了SDK,如果您没有,它会将您指向可以下载图形卡制造商DLL的站点。但我肯定不需要为我将要使用的每个图形卡构建不同版本的游戏 StackOverflow似乎也没有任何东西,至少没有我可以理解的措辞。我只
更新:OpenGL似乎有一种不涉及SDK的ideosyncratic习惯用法,即.DLL、.lib和头文件包。我使用的是DirectX,确实如此。(事实上,DirectX SDK甚至包括文档!)据我所知,在使用OpenTK框架(C#)和JOGL框架(Java)时,您的OpenGL版本由图形卡决定。我知道我的笔记本电脑只支持桌面上的OpenGL 1.1,它支持最新版本 笔记本电脑有一个带有I5进程的英特尔IGP
桌面有Radeon 6950HD。让我引用您提供的链接来回答 对于您熟悉的大多数库,您只需#包含一个头文件,确保库链接到您的项目或makefile中,就可以了。OpenGL不是这样工作的。 由于最终与本讨论无关的原因,您必须通过特定于平台的API调用手动加载函数这个样板工作是通过各种OpenGL加载库完成的;这些都使这一过程顺利进行。强烈建议您使用一个
这篇文章包含一个名为的wiki页面的便利链接。首先,OpenGL不是某种集中管理的库和实现(与DirectX相反),这就是为什么您不能下载SDK的原因,因为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随操作系统附带新的DirectX版本更新。只是微软看不到支持OpenGL的理由。所以OpenGL-1.1是表面上可见的,我们必须处理它。由于它包含在编译器中,所以没有理由提供实际的SDK下载,因为所有必要的东西都已经在编译器安装中了
好的,那么如何从更高版本的OpenGL中获取这些函数呢?好的:GetProcAddress
。这是官方的方法。因为实际的细节取决于所讨论的操作系统,但OpenGL是独立于操作系统的,根本不可能有一个明确的OpenGL SDK。因此正式来说,您必须做的是:
- 从下载更高版本的OpenGL标题
- 对于要使用的每个函数,定义一个函数指针变量来保存它
- 使用
GetProcAddress
glew_STATIC
预处理器宏定义配置到项目全局编译器标志中#include“glew.h”
代替#include
glewInit()