因为计算机图形学实验要用到,我们宿舍三个人搞了好久都出错,不停的有bug出现,终于弄出来了(再不出来我就要切腹自尽了!!!!),决定整理一下。
目录
- 下载git
- 下载libigl
- 下载cmake
- cmake libigl
- vs配置
下载git
在Github上下载libigl的zip压缩包解出来的会有错误,因此最好采用git命令下载,首先你需要下载一个git。
git下载官网git下载安装教程我是按照这个博主的教程下的git,推荐给大家。
下载libigl
按Windows + r打开cmd
进入你想将libigl保存的目录,如我想将libigl下载在D盘:
输入命令:
git clone --recursive https://github.com/libigl/libigl.git
等待下载完成,libigl文件夹就出现了。
下载cmake
附上我当时使用的教程(不用重启电脑就可以,忽略这个教程最后面重启电脑那一步。):cmake下载安装教程
cmake libigl
打开CMake(cmake-gui),即:
文件选择如下:
红色箭头指的地方:因为我的libigl文件夹直接在D盘,因此就放的D:/libigl。根据自己的libigl所在位置自行修改目录。
蓝色箭头指的地方的build文件夹是自己需要创建的。先点击Configure,如果你已经下载了vs,直接默认就行。
等待它完成进度条。
**这里说一下:**在cmake的过程中它可能会报错,如果报错再点Configure重新cmake,多来几次就能成功。
成功后再点Generate,会看到出现两个done的指令。
cmake就算完成了。去你建立的build文件夹,打开libigl.sln
可以选择全部编译,也可以只编译其中的几个。因为我们图形学实验只用到了101、102、103、206、607,因此我只需要编译这几个就行。
如果你是直接全部编译,跳过我现在说的也行。
如果你是单独编译其中的几个:
先选中你要编译的项目:
右击选择将它设置为启动项目:
再编译就行。
vs配置
这个真的要吐血,一直死在这一步,划重点了!!!
新建一个你自己的vs项目(正常创建即可)。
64位系统选择x64,32位系统选择x86(一定要选!!一定啊,别不当回事儿!!)
修改附加包含目录:
以下是我的,根据自己的目录进行相应修改:
D:\libigl\external\glad\include;D:\libigl\external\glfw\include;D:\libigl\external\stb;D:\libigl\build\stb_image;D:\libigl\tutorial;D:\libigl\cmake\..\include;D:\libigl\cmake\..\external\eigen
修改预处理器:
我放的是:
WIN64
_DEBUG
_CONSOLE
_WINDOWS
IGL_STATIC_LIBRARY
NOMINMAX
TUTORIAL_SHARED_PATH="./data"
CMAKE_INTDIR="Debug"
说明一下:32位系统将WIN64修改为WIN32,TUTORIAL_SHARED_PATH="./data"是我的实验需要的数据的目录,我看到其他的人配置的时候是让TUTORIAL_SHARED_PATH="D:\libigl\tutorial"的,根据自己的情况进行修改。
添加之后变为:
修改附加依赖项:
我添加的是:
D:\libigl\build\Debug\igl.lib
D:\libigl\build\Debug\igl_opengl.lib
D:\libigl\build\Debug\igl_opengl_glfw.lib
D:\libigl\build\Debug\igl_png.lib
D:\libigl\build\Debug\glfw3.lib
opengl32.lib
D:\libigl\build\Debug\glad.lib
D:\libigl\build\Debug\igl_stb_image.lib
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
其中, Debug文件下下的那些lib是你的libigl.sln编译完成后才有的。如我的是编译了101、102、103、206、607后,Debug文件夹下的lib有:
如果不懂自己实验需要什么就全编译(哭泣)。
接下来放一段代码测试一下:
#include <igl/readOBJ.h>
#include <igl/opengl/glfw/Viewer.h>
#include<iostream>
#include "tutorial_shared_path.h"
Eigen::MatrixXd V;
Eigen::MatrixXi F;
int main(int argc, char* argv[])
{
// Load a mesh in OBJ format
//igl::readOBJ("kitten_simplified.obj", V, F);
igl::readOBJ("D:\\vs\\vs实验代码\\计算机图形学\\Project9\\data\\kitten_simplified.obj", V, F);
// Plot the mesh
igl::opengl::glfw::Viewer viewer;
viewer.data().set_mesh(V, F);
viewer.launch();
}
那个obj文件可以放你自己的文件,如果没有现成的,可在D:\libigl\tutorial\data文件夹下选一个使用。
结果如下: