在 Windows 上设置 OpenGL 库

Setting up OpenGL library on windows

本文关键字:OpenGL 设置 Windows      更新时间:2023-10-16

我是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(应该是窗口,不确定错误的原因)是这个 http://www.opengl.org/resources/libraries/glut/glut37.zip

通常我编写java编程,设置IDE我没有太多麻烦。所以请放轻松,现在我问:

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

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

我想通知您,GLUT图书馆自1998年以来就被废弃了。最新版本是 [3.7]。但你很幸运!

"freeglut"是OpenGL Utility Toolkit(GLUT)库的替代品。您需要的一切都在这里,我建议您全部阅读。

为了帮助您,您可以在此处找到Windows二进制文件,查找名为"下载MSVC的freeglut 2.8.1-1"的链接。

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

祝你好运!

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

在我的大学里,我的教授在实验室里解决了所有问题,在那里我使用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"?我敢打赌,因为你到目前为止总是这样做,或者你在某个地方读过它,甚至没有试图理解发生了什么。

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

通常我编写Java程序,设置IDE时我没有太多麻烦

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

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

我打赌不是很多。这是缺乏对软件构建过程如何工作和控制的理解。你必须咬紧牙关,先学会这一点。为此,我建议你在电脑上安装 Linux 或 FreeBSD,或者至少安装 Cygwin。

Windows不是一个很好的系统来学习这些东西,因为它是围绕点击GUI构建的。这并不是说Windows是一个糟糕的操作系统。这是 juat,您希望拥有一些可以尝试的东西并快速完成构建工具选项切换的各种迭代。GUI不能给你这个。