【问题标题】:Setting up OpenGL library on windows在 Windows 上设置 OpenGL 库
【发布时间】:2013-10-26 08:25:25
【问题描述】:

我对 OpenGL 完全陌生,所以我试图在家里编译我的应用程序。在我的大学里,我的教授在实验室里解决了所有问题,在那里我使用 Linux。在家里,我使用的是带有 Visual Studio 2013 的 Windows 8。

我正在尝试在我的应用中构建一个球体,其中包含以下内容:

#include <GL/glut.h>
#include <math.h>
#include <iostream>

所以,因为它包含 Glut.h,所以我去 http://www.opengl.org/resources/libraries/glut/glut_downloads.php#2 下载该库并让它摇滚,但我遇到了一些问题。

我以为 Windows 版本会编译,但事实并非如此。 dll 不在包内,因为我希望将它们链接到我的项目属性中,所以我尝试使用 CMake 来编译 glut 但它不起作用。 CMake 将以下日志返回给我:

CMake Error: Cannot open file for write: C:/Program Files/Glut 3.7 Build/CMakeCache.txt.tmp
CMake Error: The source directory "C:/Program Files/Glut 3.7/glut-3.7" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.
CMake Error: : System Error: No such file or directory
CMake Error: Unable to open cache file for save. C:/Program Files/Glut 3.7 Build/CMakeCache.txt
CMake Error: : System Error: No such file or directory

它说该文件夹不包含 CMake 文件。

我的 glut 下载链接(应该是 windows,不确定错误的原因)是这个http://www.opengl.org/resources/libraries/glut/glut37.zip

通常我编程java,我没有那么多头疼的设置IDE..所以请放轻松,现在我问:

让我的 OpenGL 代码运行我缺少什么?

【问题讨论】:

    标签: c++ windows opengl cmake glut


    【解决方案1】:

    你的老师应该首先帮助你。

    我想通知你,GLUT 库自 1998 年以来就被废弃了。最后一个版本是 [3.7]。但是你很幸运!

    freeglut”是 OpenGL 实用工具包 (GLUT) 库的替代品。 您需要的一切都是here,我建议您全部阅读。

    为了帮助您,here 您可以找到 Windows 二进制文件,查找名为“Download freeglut 2.8.1-1 for MSVC”的链接。

    下载后,您必须链接 library 文件夹、include 文件夹并将 freeglut.dll 复制到您的项目文件夹(在 Debug 或 Release 文件夹内)。您可以在 bin 文件夹中找到 dll 文件。 之后,您可以毫无问题地拨打#include "GL/glut.h"

    祝你好运!

    【讨论】:

      【解决方案2】:

      它不能用 CMake 编译。打开 Visual Studio 命令提示符并在 glut 源代码的顶级目录中键入 nmake

      【讨论】:

        【解决方案3】:

        在我的大学里,我的实验室里的教授解决了所有问题,我在那里使用 Linux。在家里,我使用的是带有 Visual Studio 2013 的 Windows 8。

        那么您绝对必须做的第一件事就是前往您的 GPU 制造商的网站,从那里下载最新的驱动程序并安装它们。也就是说,因为 Windows 8 默认安装的驱动程序缺少适当的 OpenGL 功能。

        所以,既然它包含Glut.h

        您的意思是glut.h – 文件名在大多数操作系统上都区分大小写(Windows 不在其中)。因此,出于可移植性的原因,您应该注意使用正确的拼写来编写它们。

        我去http://www.opengl.org/resources/libraries/glut/glut_downloads.php#2下载库

        旧的 GLUT 库已经有十多年没有维护了。使用像 FreeGLUT 这样的替代实现并使用它。

        所以我尝试使用 CMake 来编译 glut 但它没有工作。

        好的,这里没有技术问题,但缺乏理解。本质上,你的大脑得到了我所说的“IDE rot”:IDE 的所有这些糖衣和点击式动作都掩盖了构建程序时实际发生的情况。您必须在那里咬紧牙关,了解构建控制生成器构建系统编译器之间的交互方式链接器 有效。

        CMake 是一个构建控制生成器:在 CMake 中,您描述了程序源的构建依赖项。从该 CMake 生成所使用的 构建系统 的实际构建信息(Linux 上的 GNU make 和 GCC;例如 Windows 上的 NMake 和 MSVC++ 编译器)。

        当然,要使 CMake 工作,必须存在适当的 CMake 配置。在 GLUT 的情况下,这绝对不存在(GLUT 的最后一个正式版本早于 CMake 的第一个版本。

        现在您真的应该想知道:您为什么首先调用“cmake”?我敢打赌,因为到目前为止你总是这样做,或者你在某个地方读到它,甚至没有试图理解发生了什么。

        您所做的是遵循Cargo Cult - 它在某种程度上类似于实际过程,从外部看起来很像,但它不会产生结果。费曼的演讲后来创造了Cargo Cult Programming这个词;有趣的是,我使用这个术语(与它的定义一致,只是因为熟悉费曼的演讲)却不知道其他人已经以完全相同的方式创造了它。这种情况经常发生,以至于人们会独立地为它提出相同的术语。

        通常我编写 Java 程序,设置 IDE 时我不会那么头疼

        嗯,这就是你的问题。您只知道如何在 IDE 中四处点击。即使在使用 IDE 编程 Java 时,您也应该非常熟悉实际的构建过程:Java 编译器、JAR 文件创建等等。

        让我的 OpenGL 代码运行我缺少什么?

        我打赌不是很多。缺乏对软件构建过程如何工作和控制的理解。你必须硬着头皮先学会这一点。为此,我建议您在计算机上安装 Linux 或 FreeBSD,或至少安装 Cygwin。

        Windows 不是一个很好的学习这些东西的系统,因为它是围绕可点击的 GUI 构建的。这并不是说 Windows 是一个糟糕的操作系统。您希望拥有一些可以试验的东西,并快速完成构建工具选项开关的各种迭代。 GUI 无法为您提供这些。

        【讨论】:

        • Linux 的 shell 和 Windows 的命令提示符没有区别。两者都是命令行界面,您可以从命令行调用编译器和构建工具,就像在 Windows 上一样容易。事实上,当您安装 Visual Studio 时,它还会安装完全配置的命令提示符,准备就绪。如果有的话,在安装了 Visual Studio 的 Windows 上从命令行编译可能会更容易。
        • @IInspectable:这是个糟糕的笑话,不是吗?与真正的 Unix-eqsque shell 相比,标准的 Windows cmd.exe 命令提示符是一个糟糕的笑话。在 Windows 中,您必须使用 PowerShell 才能更接近。如果您没有发现像 zsh 或 bash 这样的 shell 与 Windows 的 cmd.exe 之间的区别,那么您肯定没有使用真正的 shell。
        • 关于调用gcccl 确实没有区别,或者makenmake/msbuild 就此而言。这就是你真正需要从命令行编译来学习的东西。如果您不同意,您需要扩展您的答案以包括为什么 *nix 是一个更好的系统,可以在构建基础上打下坚实的基础。
        • @IInspectable:其他人已经这样做了。比我能做的要好得多,而且更详细:blog.sanctum.geek.nz/series/unix-as-ideslideshare.net/tkramar/unix-is-my-ide#btnNextmichaelochurch.wordpress.com/2013/01/09/…
        • 你改变了话题。您在回答中涉及的主题是如何了解构建过程。而且您仍然没有提供深刻的证据来证明为什么 *nix 在这方面做得更好。您提供的链接说明了如何设置外壳以用作 IDE(替换)。但我们仍处于暂时不要使用 IDE 阶段。鉴于 OP 已经有一个完全配置的基于命令行的构建系统,您的建议是通过 很多 的麻烦来获得另一个是错误的和没有根据的。
        猜你喜欢
        • 1970-01-01
        • 2012-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-23
        • 1970-01-01
        • 2016-05-05
        • 1970-01-01
        相关资源
        最近更新 更多