如何安装适用于 Windows C++ 的最新版本 OpenGL?

2024-05-05

我正在使用 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 非常简单。我建议使用静态链接:

  1. 从以下位置下载 GLEWhttp://glew.sourceforge.net http://glew.sourceforge.net
  2. 将 glew.c 和 glew.h 与项目源文件放在一起。
  3. 将glew.c添加到编译源列表中;确保有GLEW_STATIC预处理器宏定义被配置到您的项目全局编译器标志中。
  4. Use #include "glew.h"代替#include <GL/gl.h>
  5. 在程序调用中创建 OpenGL 窗口之后glewInit()

现在给你一些建议:你真的应该学会read文档(不仅仅是浏览)。我刚刚写的所有内容都在您链接的参考文献中进行了说明。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何安装适用于 Windows C++ 的最新版本 OpenGL? 的相关文章

  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S
  • ASP.NET Core Serilog 未将属性推送到其自定义列

    我有这个设置appsettings json对于我的 Serilog 安装 Serilog MinimumLevel Information Enrich LogUserName Override Microsoft Critical Wr
  • 将布尔参数传递给 SQL Server 存储过程

    我早些时候问过这个问题 我以为我找到了问题所在 但我没有 我在将布尔参数传递给存储过程时遇到问题 这是我的 C 代码 public bool upload false protected void showDate object sende
  • 当 contains() 工作正常时,xpath 函数ends-with() 工作时出现问题

    我正在尝试获取具有以特定 id 结尾的属性的标签 like span 我想获取 id 以 国家 地区 结尾的跨度我尝试以下xpath span ends with id Country 但我得到以下异常 需要命名空间管理器或 XsltCon
  • 在高 dpi Windows 平台上自动重新缩放应用程序?

    我正在编写一个需要在高 dpi Windows 192dpi 而不是 96dpi 上运行的 Qt 应用程序 不幸的是 Qt 框架尚不支持高 dpi 至少在 Windows 上 因此我的应用程序及其所有元素看起来只有应有尺寸的一半 有没有办法
  • 获取没有非标准端口的原始 url (C#)

    第一个问题 环境 MVC C AppHarbor Problem 我正在调用 openid 提供商 并根据域生成绝对回调 url 在我的本地机器上 如果我点击的话 效果很好http localhost 12345 login Request
  • 如何将图像和 POST 数据上传到 Azure 移动服务 ApiController 终结点?

    我正在尝试上传图片and POST表单数据 尽管理想情况下我希望它是json 到我的端点Azure 移动服务应用 我有ApiController method HttpPost Route api upload databaseId sea
  • 在数据库中搜索时忽略空文本框

    此代码能够搜索数据并将其加载到DataGridView基于搜索表单文本框中提供的值 如果我将任何文本框留空 则不会有搜索结果 因为 SQL 查询是用 AND 组合的 如何在搜索 从 SQL 查询或 C 代码 时忽略空文本框 private
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • 将自定义元数据添加到 jpeg 文件

    我正在开发一个图像处理项目 C 我需要在处理完成后将自定义元数据写入 jpeg 文件 我怎样才能做到这一点 有没有可用的图书馆可以做到这一点 如果您正在谈论 EXIF 元数据 您可能需要查看exiv2 http www exiv2 org
  • Github Action 在运行可执行文件时卡住

    我正在尝试设置运行google tests on a C repository using Github Actions正在运行的Windows Latest 构建过程完成 但是当运行测试时 它被卡住并且不执行从生成的可执行文件Visual
  • for循环中计数器变量的范围是多少?

    我在 Visual Studio 2008 中收到以下错误 Error 1 A local variable named i cannot be declared in this scope because it would give a
  • 如何将单个 char 转换为 int [重复]

    这个问题在这里已经有答案了 我有一串数字 例如 123456789 我需要提取它们中的每一个以在计算中使用它们 我当然可以通过索引访问每个字符 但是如何将其转换为 int 我研究过 atoi 但它需要一个字符串作为参数 因此 我必须将每个字
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • 在 Dynamics CRM 插件中访问电子邮件发件人地址

    我正在编写一个 Dynamics CRM 2011 插件 该插件挂钩到电子邮件实体的更新后事件 阶段 40 pipeline http msdn microsoft com en us library gg327941 aspx 并且在此阶
  • 32 位到 64 位内联汇编移植

    我有一段 C 代码 在 GNU Linux 环境下用 g 编译 它加载一个函数指针 它如何执行并不重要 使用一些内联汇编将一些参数推送到堆栈上 然后调用该函数 代码如下 unsigned long stack 1 23 33 43 save
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a
  • ASP.NET MVC 6 (ASP.NET 5) 中的 Application_PreSendRequestHeaders 和 Application_BeginRequest

    如何在 ASP NET 5 MVC6 中使用这些方法 在 MVC5 中 我在 Global asax 中使用了它 现在呢 也许是入门班 protected void Application PreSendRequestHeaders obj

随机推荐

  • 有没有办法在两个 Visual Studio 实例之间拖放来复制文件?

    有没有办法在两个 Visual Studio 2008 实例之间复制文件 插件 设置还是其他什么 目前 将文件从一个实例拖动到另一个实例不会执行任何操作 鼠标显示该操作无效 右键单击文件并从实例 1 中选择 复制 然后粘贴到实例 2 中会导
  • 如何匹配特质实现者

    我有一个由某些结构实现的特征 我想编写一个模式匹配 可以处理每种可能的情况 trait Base struct Foo x u32 struct Bar y u32 impl Base for Foo impl Base for Bar f
  • 在 GitHub 上托管可执行文件?

    我想将可执行文件与我的源代码一起分发 我的源代码全部整齐地托管在 GitHub 上 是否可以将可执行文件和安装程序添加到我的 GitHub 项目页面 而不将它们添加到我的 git 存储库 请注意 由于某种原因 GitHub 停止了此功能 请
  • 如何使用 Spark 执行插入覆盖?

    我正在尝试将我们的 ETL Hive 脚本之一转换为 Spark 其中 Hive ETL 脚本维护一个表 其中需要在每晚新同步之前删除部分数据 Hive ETL 使用插入覆盖的方式将主表删除超过 3 天的数据 基本上创建一个临时表 其中的数
  • 支持多屏幕[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 支持多个屏幕和不同的屏幕密度必须注意
  • 计算集合中某种类型的对象并将其用作文本框中的字符串

    我想用集合中某种图形的 count 1 填充文本框 该集合是图形的通用列表 图形是某种类型的图形的实例 以下作品 txtName Text figures OfType
  • 为什么 LocationSettingsResult startResolutionForResult 不调用 onActivityResult?

    我看过这个问答LocationSettingsRequest 对话框 跳过 onActivityResult https stackoverflow com questions 31235564 locationsettingsreques
  • SharePoint DateTime 默认值尊重时区

    我有一个日期时间字段 仅限日期 它使用 今天的日期 作为默认值 但是 当用户将项目添加到列表时 选择的日期对应于 GMT 时区 因此 如果用户在 2012 年 2 月 22 日晚上 7 点 美国东部标准时间 添加项目 则默认值实际上将显示为
  • 修改rails ActiveAdmin gem中的BaseController

    我在 Rails 应用程序中使用 ActiveAdmin gem 如果我想添加一个适用于所有 activeadmin gem 的新的 before 过滤器 我该怎么做 我想我可以修改 ActiveAdmin 中的 BaseControlle
  • 如何在 django-tastypie 中获取授权用户对象

    我需要在水合物方法中获取授权用户对象 如下所示 class SalepointResource ModelResource def hydrate self bundle user bundle request user But reque
  • Go中funcappend的实现在哪里?

    我对 go 非常感兴趣 并尝试阅读 go 函数的实现 我发现其中一些函数没有实现 如追加或调用 The append built in function appends elements to the end of a slice If i
  • Twitter Bootstrap:仅将某些菜单项折叠到下拉菜单中

    我想知道如何创建 Twitter Bootstrapnavbar在调整浏览器窗口大小时折叠该菜单中的项目 一次折叠一个或两个项目 我见过的大多数导航栏都将整个导航栏折叠成一个下拉菜单 当窗口大小调整时 基本上隐藏了导航栏上的所有内容 但我仍
  • 在 package.json 中声明时 Reactify 转换未运行

    我正在尝试将reactify 转换与browserify 和gulp 结合使用 这个 gulp 任务有效 return browserify paths node modules app scripts entries app script
  • 如何将json从android发送到php?

    为了将 json 从 android 发布到 php 我使用了 Volley 库StringRequest目的 StringRequest sr new StringRequest Request Method POST url new R
  • 如何按日期属性对对象数组进行排序?

    假设我有一个由几个对象组成的数组 var array id 1 date Mar 12 2012 10 00 00 AM id 2 date Mar 8 2012 08 00 00 AM 如何按日期元素从最接近当前日期和时间的日期开始对该数
  • require未定义nodejs

    尝试使用此 smartsheet api http smartsheet platform github io api docs javascript node js sample code http smartsheet platform
  • 具有多个参数的 JavaScript 函数

    我有一个将数组作为输入的函数 我如何修改它以使用变量参数和数组 例如我想要arrSum 1 2 3 arrSum 1 2 3 回来true即两者都应该返回 6 const arrSum arr gt arr reduce a b gt a
  • 处理 Cloud Run 容器关闭

    在编写 Cloud Run 服务时 我们开发一个容器来监听PORT用于处理传入 HTTP 请求的环境变量 容器的实例会启动并处理请求 然后在完成原始请求后存活一段时间 以防有更多请求到达 如果没有进一步的请求 GCP关闭容器 我在这方面有一
  • 查看登录设备

    我想查看Log在设备上 即System out println 我可以查看DDMS但如何在运行时在设备屏幕上查看APK文件 还有一个适用于 Android 的 Logcat 应用程序 code google com p android ra
  • 如何安装适用于 Windows C++ 的最新版本 OpenGL?

    我正在使用 Visual Studio 2010 运行 Windows 7 包含的 OpenGL 版本 include 是版本 1 1 我希望使用合理的当前版本 某种版本 3 或 4 我需要做什么才能达到该状态 OpenGL SDK 页面位