PCL的MFC开发
这里面PCL提供的VTK需要自己重新编译,我自己编译的是VTK7.0.0版本,
具体资料可以看我的资源:http://download.youkuaiyun.com/download/ldepn/10137427
编译完VTK之后,开始新建MFC。
PCL的MFC显示重点在这几句代码:
在头文件声明下面的变量
boost::shared_ptr<pcl::visualization::PCLVisualizer> m_viewer;//要共享指针类型的,要不然,显示窗口会跳出MFC界面
vtkRenderWindow* m_win;
vtkRenderWindowInteractor* m_iren;
在.cpp文件实现下面的功能:
CStatic *pclStatic = new CStatic();
LPRECT rect = new CRect;
pclStatic = (CStatic*)GetDlgItem(IDC_PCLViewer);//获取static的句柄
//显示窗口初始化
m_viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));
m_viewer->addCoordinateSystem();
m_viewer->setBackgroundColor(0, 0, 0);
m_viewer->initCameraParameters();
m_win = m_viewer->getRenderWindow();
//m_viewer.setBackgroundColor(0, 0, 0);
//m_viewer.initCameraParameters();
//m_viewer.addCoordinateSystem();
//m_win = m_viewer.getRenderWindow();
m_win->SetParentId(pclStatic->m_hWnd);
m_iren = vtkRenderWindowInteractor::New();
pclStatic->GetWindowRect(rect);
m_win->SetSize(rect->right - rect->left, rect->bottom - rect->top);
m_win->SetPosition(0, 0);
m_iren->SetRenderWindow(m_win);
m_viewer->createInteractor();
m_win->Render();
效果如下:
MFC背后的错误提示框还没有办法去掉,后面再慢慢搞吧!
找到去掉错误提示框的办法了!
在程序最开始的调用VTK之前加下面的语句:
#ifndef INITIAL_OPENGL
#define INITIAL_OPENGL
#include <vtkAutoInit.h>
//编译VTK的时候如果是OpenGL的就为改为TK_MODULE_INIT(vtkRenderingOpenGL)
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)
VTK_MODULE_INIT(vtkRenderingContextOpenGL2)
VTK_MODULE_INIT(vtkRenderingFreeType)
#endif
我这里加载这个文件:
注:用PCL一键安装的VTK也可以,不一定需要重新编译VTK