先看效果图
libigl库的安装和配置
我们新建个win32项目,并且配置调用libigl库实现效果。
具体配置步骤参见我的上一篇博文《libigl学习–项目102_DrawMesh》
代码分析
igl::readOFF(TUTORIAL_SHARED_PATH "/bumpy.off", V1, F1);
igl::readOFF(TUTORIAL_SHARED_PATH "/fertility.off", V2, F2);
这里加载了两个模型。
igl::opengl::glfw::Viewer viewer;
Viewer可以实现很多功能,包括窗口的创建,文件保存,屏幕的消息响应,opengl的初始化等等。
这里我们主要做一件事,检测键盘的消息响应。
当键盘(在英文输入法下)按下了1,将显示第一个模型,按下2将显示第二个模型。
viewer.callback_key_down = &key_down;
key_down函数的地址赋给callback_key_down,这是viewer中的函数指针,
消息响应过程如下:
在glfw创建的窗口中,库的接口调用了glfwSetKeyCallback
GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun cbfun);
通过检测,键盘是否有变化,调用了key_down
if (action == GLFW_PRESS)
__viewer->key_down(key, modifier);
callback_key_down指向函数key_down
当键盘(在英文输入法下)按下了1,将显示第一个模型,按下2将显示第二个模型。