先看效果图
【1】git clone得到的libigl库
可以参看libigl库的clone和安装
【2】新建一个win32的空项目
【3】加载文件
(1)将libigl库的103项目的main函数文件包含进来
main函数文件在tutorial–102_DrawMesh文件夹下。
(2)将libigl库的tutorial_shared_path.h文件加载进来
tutorial_shared_path.h文件在libigl-tutorial文件夹下。
这个文件是方便加载模型,将模型的文件路径定义为宏。
(3)将glad.c文件加载进来
glad封装了opengl功能函数接口的扩展库文件。
glad.c在libigl–external–glad–src里面
【4】配置 包含文件,库文件
(1)在项目文件中,新建个include和lib文件夹。
(2)将libigl库下的external文件夹和igl文件夹复制进我们的include文件夹。
(3)将glfw3.lib复制进lib文件夹
在libigl\external\embree\tutorials\common\glfw\Win32\vc14下找到glfw3.lib
因为我们新建的是win32项目,所以这里的库文件也要是32位项目下编译的lib文件。
【5】 配置项目属性
右键项目,打开vc++目录–包含目录,输入
include
include\external\glfw\include
include\external\glad\include
include\external\eigen
打开vc++目录–库目录
输入
lib
打开链接器-输入-附加依赖项
opengl32.lib
glfw3.lib
【6】加载模型文件
我们将需要的3D模型都加载进来
将libigl库下的libigl–tutorial–data 文件夹复制进项目
将tutorial_shared_path.h中的文件路径替换为"data"
#ifndef tutorial_shared_path_h_included
#define tutorial_shared_path_h_included
#ifndef TUTORIAL_SHARED_PATH
#define TUTORIAL_SHARED_PATH "data"
#endif
#endif
代码分析
readOFF(TUTORIAL_SHARED_PATH "/bunny.off", V, F);
这个函数是加载buny模型,并且把顶点存进矩阵V中,面片的索引存进F中。
igl::opengl::glfw::Viewer viewer;
viewer类头文件是libigl封装的接口,渲染模型。
viewer.data().set_mesh(V, F);
set_mesh()将顶点和面加载后,计算模型的面法矢,设置顶点的统一颜色(通过光照的方式),
并且还生成了贴图。
viewer.launch();
launch()函数首先是初始化,launch_init(resizable,fullscreen,name,windowWidth,windowHeight);
设置了opengl的版本号3.3,
通过glfwCreateWindow创建了窗口。
这个函数里还初始化了opengl的扩展。