Opengl 64位窗口

Posted

技术标签:

【中文标题】Opengl 64位窗口【英文标题】:Opengl 64 bit windows 【发布时间】:2015-01-16 15:22:25 【问题描述】:

我正在尝试在 Windows 8 64 位机器上安装 opengl 我没有找到任何包含 gl.h glu.h 文件的库我找到了 glut 库/头文件...,通过一些堆栈溢出帖子我知道了 opengl是 windows 的一部分,那么它在哪里找到。帮助

【问题讨论】:

OpenGL 包含在您的驱动程序中(我假设),但在 Windows 上没有适用于它的 SDK。您可以使用各种库,例如 SFML,让您更轻松地开始使用它。 请把你的问题说清楚一点。 无需标记。这是一个完整的初学者会问的问题。 How to get the GL library/headers? 的可能重复项 @Robinson:我有点厌倦了这个在整个网站上重复出现的基本误解:downvotes(不是“mark downs”——你在这里已经四年了;学习行话) 是针对一个糟糕且不清楚的问题,没有大量研究工作的证据,不仅仅是因为他是初学者。 【参考方案1】:

OpenGL-1.1 自 Windows-NT4 (并被追溯纳入 Windows 95-B)。

因此每个针对 Win32 API(顺便说一句也涵盖 64 位版本)的编译器工具链必须包含必要的符号声明(C 中的标头)和 API 链接存根。或者换句话说:无需下载或安装任何东西来为 OpenGL 开发。 从不(!),我再说一遍,从不(!),下载任何名为 opengl32.dllopengl32.libgl.hwgl.h 或类似名称的东西,不要甚至不考虑替换您已经拥有的完美文件;这样做只会破坏您的系统(操作系统或编译器工具链)。这样做是不必要的,实际上是有害的。因此,您认为为您提供良好信息的页面实际上是非常有害的。完全无视其信息。

OpenGL 本身不是一个库,而是遵循所谓的实现 的规范。 适用于 Windows 的 OpenGL 实现是显卡驱动程序的一部分! 还有一个软件光栅化器后备方案涵盖 OpenGL-1.1,以防没有可用的显卡支持。请注意,通过 Windows 更新 安装的驱动程序中不包含现代 OpenGL 支持;支持 OpenGL 的 GPU 驱动程序必须直接从 GPU 供应商的网站下载并手动安装。

Windows 中超出 OpenGL-1.1 的功能必须在运行时通过所谓的“扩展机制”加载。由于这是一个乏味的过程,因此有几个 3rd 方库可以完成这项工作。最受欢迎的可能是GLEW,但它有很多问题。

(为进一步澄清而编辑:)值得注意的是,除了 Windows OpenGL-1.1 ABI(即 WGL API 原样)已经提供的功能之外,没有为 Windows-NT4 指定)是访问最现代的 OpenGL 功能所必需的。当然,必须以某种方式定义新引入的函数指针类型和数字标记值,以便它们可以在源代码中使用,但是没有“强制”方式(即库)来做到这一点。这使得一个使用——例如——可以用 Visual C++ 4(VC++ 4 于 1995 年发布)构建的纯现代 OpenGL-4 核心配置文件的程序成为可能,假设它只使用以前的语言特性和操作系统 API。那时可用。在 Windows 中创建现代 OpenGL 上下文的实际步骤在OpenGL Wiki 中有很好的记录,读者可以参考此资源,因为此处详细说明将在很大程度上超出此答案的范围。

OpenGL 本身也不涉及创建窗口、处理用户输入等。您当然可以针对本机 OS API 进行编程来执行此操作。但通常你只想使用一些框架。 OpenGL 开发的流行选择是 GLFW、FreeGLUT、SDL2 和 SMFL。

【讨论】:

很好的答案,我要补充一点,函数可以通过 symly 加载,包括生成的文件,甚至无需使用任何库 bitbucket.org/alfonse/glloadgen/wiki/Home 如果您想使用不是两个 十年 旧的 OpenGL 版本怎么办? @LightnessRacesinOrbit:我在倒数第二段中回答了这个问题。 OpenGL 提供了一种加载扩展和扩展功能(扩展机制)的机制,通过它可以访问现代特性。 @datenwolf:例如,OpenGL 3 的所有功能都可以通过 OpenGL 1.1 的扩展系统完整使用吗? @LightnessRacesinOrbit:我添加了一段 - 犹豫不决,因为我觉得我们的讨论和附加信息已经在原始问题所询问的信息的边缘。此外,我觉得如果没有那个(恕我直言高度冗余的)段落,仔细阅读我的答案的读者会理解这一点。恕我直言,添加该段落会降低答案的质量。 – 就个人而言:我浏览了你的一些 cmets,我得到的印象(我在这里可能非常错误),你可能认为让人们以你的风格回答是你的责任。【参考方案2】:

简短回答:安装您的编译器,找到该编译器的 OpenGL 教程。 (例如 Google:Visual Studio OpenGL 教程)和开始不再需要下载。它包含在编译器中。

长答案:

OpenGL SDK 不是您安装的东西。 Basic SDK (OpenGL 2.1) 应该与任何标准编译器一起预打包(Visual Studio 和 GCC 都可以。)

您应该能够通过使用#include <gl/gl.h> 来使用预打包的版本,并将适当的库添加到您的库路径(这些库也随编译器提供。您应该能够找到教程关于这个。)

要使用 2.1 以上的任何 OpenGL 版本,也不需要库。如果支持,您可以使用wglGetProcAddress(...) 获取适当的功能以允许您使用这些功能。尽管如此,您仍然需要创建一个 OpenGL 2.1 上下文。

但是,为了轻松使用 OpenGL3,您可能需要下载 gl3.h 标头。但是,没有要下载的 gl3.lib 文件。您只需使用编译器附带的库即可。

这是因为 OpenGL 没有在 SDK 中实现。它在您的显卡驱动程序中实现,您的程序直接与驱动程序通信。从用于查询支持的函数和指向这些函数的指针的基本 API 开始,以便您可以调用它们。

【讨论】:

【参考方案3】:

GLUT 会为您执行此操作,您无需自己包含它。你的设置好像有问题。还有其他库可以用来代替 GLUT,但是你需要使用其中一个,因为你不能直接处理 OpenGL。

【讨论】:

我已经设置了 glut 但是当我尝试编译时出现以下错误 gl/gl.h: no such file or directory 我对 GLUT 没有任何个人经验(我只使用过 freeGLUT),所以我无法帮助设置它,抱歉。不过我不建议使用它(它很旧并且没有得到积极维护,而且可能很难设置)。

以上是关于Opengl 64位窗口的主要内容,如果未能解决你的问题,请参考以下文章

使用 Vista/7 的 OpenGL 最多 32 个屏幕窗口

一步步学OpenGL 1-《打开一个窗口》

64 位 visio 上不支持无窗口 ActiveX 控件异常

64 位窗口上的 Python 32 位内存限制

gtkmm 3 窗口 64 位

如何在 64 位窗口中将 R 与 Access 数据库连接?