Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何安装当前版本的OpenGL for Windows C++;?_C++_Windows_Api_Opengl - Fatal编程技术网

C++ 如何安装当前版本的OpenGL for Windows C++;?

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似乎也没有任何东西,至少没有我可以理解的措辞。我只

我正在用VisualStudio2010运行Windows7。OpenGL包含的版本(include)是1.1版,我想使用一个合理的最新版本——某种版本3或4

我需要做什么才能达到那种状态?位于的OpenGL SDK页面似乎表示不允许您下载SDK,而位于的OpenGL wiki则表示希望您已经拥有了SDK,如果您没有,它会将您指向可以下载图形卡制造商DLL的站点。但我肯定不需要为我将要使用的每个图形卡构建不同版本的游戏

StackOverflow似乎也没有任何东西,至少没有我可以理解的措辞。我只想要一个下载链接到我可以运行的安装程序,这将给我留下一个合理的最新OpenGL API。。。我到哪里去拿


更新: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
当然,如果你只想使用现代OpenGL,这是相当乏味的。因此,一些人开发了第三方工具,为你做这件事。对于所有与程序员有关的事情,这些工具的行为非常类似于SDK。到目前为止,这是最流行的选择(但不幸的是,就OpenGL的前沿而言,它并非完全没有问题)是GLEW。使用GLEW非常简单。我建议使用它静态链接:

  • 从下载GLEW
  • 将glew.c和glew.h放在项目源文件旁边
  • 将glew.c添加到已编译源代码列表中;确保将
    glew_STATIC
    预处理器宏定义配置到项目全局编译器标志中
  • 使用
    #include“glew.h”
    代替
    #include
  • 在您的程序调用中创建OpenGL窗口之后,
    glewInit()
  • 现在有一些建议:你应该真正学会阅读