本文共 2364 字,大约阅读时间需要 7 分钟。
计算机图形学的课程,用的Donald Hearn(D. 赫恩)的教材。要安装openGL。一开始我以为它是一个类似于python库一样的东西,直接安装或者下载之后添加环境变量就行了。后来搜了半天,没有直接说去安装opengl这个东西的,而是 freeglut, glut(这个也几乎没有,下载的时候,官方就重定向到freeglut下载界面了,glut在20年前就不再维护更新了,不用那个),glew, glfw之类的。
freeglut, glew, glfw都是对opengl的加强和扩展,opengl本身不方便直接使用。就像我第一次安装linux没有安装图形桌面,启动后就一个黑框,一个光标闪烁在硬盘符后面。后来安装了centOS, ubuntu等linux增强版本后,才能方便的操作和使用。道理是类似的。几个版本的具体细节可以去查一查。
下面的流程是自己下载源文件,然后再编译和配置,如果不想这么麻烦,可以直接下载我编译好的文件,然后跳过编译步骤,直接完成配置。目前都是最新版本(强迫症,总想用最新的):
安装流程:
先下载好cmake,就一个压缩包,解压,里面有cmakegui,下面会用到;
本文使用的是vs2019,其他版本应该类似;
下载freeglut最新版本(我的是freeglut3.2.1,是个压缩包),
解压可以发现里面只有.h头文件(在include/GL下),, 没有.dll文件(即dynamic link library)和.lib文件,因为需要自己编译出来
打开cmakegui,选择源码路径,即freeglut的解压目录(注意里面可能会有两层文件夹,选择include所在的里层目录),然后任意新建一个文件用于存放构建后的文件,如图,然后点击configure, 一般vs版本是自动选择好的,其他都保持默认,finish,然后还是保持默认勾选状态,点击generate,下面显示generate done就可以了。
在构建结果目录里找到.sln文件,双击使用vs2019打开,菜单栏上选择debug,x64,点击调试,等待完成。然后再把debug换成release,重复一遍。注意注意注意:编译完之后,可能会跳出白色窗口,ALL_BUILD无法访问之类的信息,直接关掉就行,不要纠结或者以为出错了,我就因此浪费不少时间。这是因为你把all_build设置成了启动项,它编译完后运行程序all_build,发现它不可以运行,因为它本来就不可以运行,我们本来要做的工作就是编译freeglut而不是运行它。如果出现警告Cxxxx:关于int和unicode,或者其他东西,不用管,直接忽略,因为已经编译完成了,没有错误就行。文件夹里已经有我们需要的东西了
打开构建结果目录,就可以看到bin和lib文件了,这就是编译的结果,接下来需要复制里面的文件到指定的位置,配置opengl环境让我们可以直接引入头文件来使用opengl库。
把bin\Release\freeglut.dll和bin\Debug\freeglutd.dll 拷贝至 C:\Windows\system32与C:\Windows\SysWOW64目录下,最好两个文件夹都复制一份,不是分别复制。
把lib\Release\freeglut.lib、freeglut_static.lib和lib\Debug\freeglutd.lib、freeglut_staticd.lib 复制 到D:\Softwares\VS2019\Visual Studio IDE\VC\Tools\MSVC\14.27.29110\lib\x64目录,不同版本或者安装的位置不同,里面的目录结构可能不一样,这里是vs2019。
把原来freeglut解压目录(注意:是原来下载的freeglut的解压目录,因为原来下载的freeglut本来就有include,不是编译出来的。)
里面include下的GL文件夹复制到D:\Softwares\VS2019\Visual Studio IDE\VC\Tools\MSVC\14.27.29110\include中。okk,现在可以建立一个项目测试一下,打开vs2019,新建控制台应用项目。
复制以下代码替换原来的程序:#define NDEBUG // 表示不使用debug的lib,使用release的lib,如果去除,将使用debug的lib#include// 如果这里编译报错,请改为 #include void myDisplay(void){ glClear(GL_COLOR_BUFFER_BIT); glRectf(-0.5f, -0.5f, 0.5f, 0.5f); glFlush();}int main(int argc, char* argv[]){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowPosition(100, 100); glutInitWindowSize(400, 400); glutCreateWindow("第一个OpenGL程序"); glutDisplayFunc(&myDisplay); glutMainLoop(); return 0;}
运行程序,测试成功。
2021.3.9热爱可抵 岁月漫长
转载地址:http://tikzi.baihongyu.com/