在Windows上设置OpenGL库

时间:2013-10-26 08:25:25

标签: c++ windows opengl cmake glut

我是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来编译过剩,但它没有用。 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,不确定错误的cos)是http://www.opengl.org/resources/libraries/glut/glut37.zip

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

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

3 个答案:

答案 0 :(得分:4)

你的老师应该在第一时间帮助你。

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

freeglut ”是OpenGL Utility Toolkit(GLUT)库的替代品。 您需要的一切都是here,我建议您阅读所有内容。

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

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

祝你好运!

答案 1 :(得分:2)

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

答案 2 :(得分:0)

  

在我的大学里,我的实验室里的教授和我使用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来编译过剩,但它没有用。

好的,这里没有技术问题,但缺乏理解。基本上你的大脑得到了我称之为“IDE腐烂”的东西:IDE的所有糖涂层和点击式动作都掩盖了程序构建时实际发生的事情。你必须在那里咬一口,了解构建控件生成器 构建系统 编译器之间的交互。链接器有效。

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

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

现在你真的很想知道:为什么你首先打电话给“cmake”?我打赌,因为你总是这么做,或者你在某个地方读到它,甚至没有试图理解发生了什么。

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

  

通常我编程Java,我没有那么多头疼来设置IDE

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

  

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

我不打赌。缺乏理解软件的构建过程是如何工作和控制的。你必须咬紧牙关并先学习。为此,我建议您在计算机上安装Linux或FreeBSD,或者至少安装Cygwin。

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