vs2008和vs2010下配置openmesh

来源:互联网 发布:2017耽美网络剧百度云 编辑:程序博客网 时间:2024/04/28 13:29

http://blog.csdn.net/leomass/article/details/8726514

因为要做图形学的实验用到了openmesh,但是网上又没有比较详细的配置和测试方法,摸索完成配置后记下一点笔记。

1.从www.epenmesh.org下载最新版的安装包或者源代码,注意下载与自己系统匹配的版本,我下的是vs2008预编译版的,下载源码自己编译时一样的。安装好visual studio。

2.安装openmesh,预编译版的是一个安装包,直接打开下一步安装就行。

3.配置vs,以vs2008为例 打开 工具-》选项-》项目和解决方案-》VC++目录,在包含文件和库文件中依次添加C:\Program Files (x86)\OpenMesh 2.3\includeC:\Program Files (x86)\OpenMesh 2.3\lib目录,具体由自己的openmesh安装目录决定

4在所建工程上右键-》属性-》预处理器-》预处理器定义添加_USE_MATH_DEFINE,同时在连接器-》输入-》附加依赖性中添加OpenMeshCored.libOpenMeshToolsd.lib

5从openmesh官网的document中拷贝cube的测试代码,如下,放到工程中编译执行即可,

[cpp] view plaincopy
  1. //=============================================================================  
  2. //                                                                              
  3. //                               OpenMesh                                       
  4. //      Copyright (C) 2001-2005 by Computer Graphics Group, RWTH Aachen         
  5. //                           www.openmesh.org                                   
  6. //                                                                              
  7. //-----------------------------------------------------------------------------  
  8. //                                                                              
  9. //                                License                                       
  10. //                                                                              
  11. //   This library is free software; you can redistribute it and/or modify it   
  12. //   under the terms of the GNU Library General Public License as published    
  13. //   by the Free Software Foundation, version 2.                               
  14. //                                                                               
  15. //   This library is distributed in the hope that it will be useful, but         
  16. //   WITHOUT ANY WARRANTY; without even the implied warranty of                  
  17. //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU           
  18. //   Library General Public License for more details.                            
  19. //                                                                              
  20. //   You should have received a copy of the GNU Library General Public           
  21. //   License along with this library; if not, write to the Free Software         
  22. //   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                   
  23. //                                                                              
  24. //-----------------------------------------------------------------------------  
  25. //                                                                              
  26. //   $Revision: 83 $  
  27. //   $Date: 2009-02-27 17:31:45 +0100 (Fri, 27 Feb 2009) $  
  28. //                                                                              
  29. //=============================================================================  
  30. #include <iostream>  
  31. // -------------------- OpenMesh  
  32. #include <OpenMesh/Core/IO/MeshIO.hh>  
  33. #include <OpenMesh/Core/Mesh/PolyMesh_ArrayKernelT.hh>  
  34. // ----------------------------------------------------------------------------  
  35. typedef OpenMesh::PolyMesh_ArrayKernelT<>  MyMesh;  
  36. // ----------------------------------------------------------------------------  
  37. // Build a simple cube and write it to std::cout  
  38.   
  39. int main()  
  40. {  
  41.     MyMesh mesh;  
  42.     // generate vertices  
  43.     MyMesh::VertexHandle vhandle[8];  
  44.     vhandle[0] = mesh.add_vertex(MyMesh::Point(-1, -1,  1));  
  45.     vhandle[1] = mesh.add_vertex(MyMesh::Point( 1, -1,  1));  
  46.     vhandle[2] = mesh.add_vertex(MyMesh::Point( 1,  1,  1));  
  47.     vhandle[3] = mesh.add_vertex(MyMesh::Point(-1,  1,  1));  
  48.     vhandle[4] = mesh.add_vertex(MyMesh::Point(-1, -1, -1));  
  49.     vhandle[5] = mesh.add_vertex(MyMesh::Point( 1, -1, -1));  
  50.     vhandle[6] = mesh.add_vertex(MyMesh::Point( 1,  1, -1));  
  51.     vhandle[7] = mesh.add_vertex(MyMesh::Point(-1,  1, -1));  
  52.     // generate (quadrilateral) faces  
  53.     std::vector<MyMesh::VertexHandle>  face_vhandles;  
  54.     face_vhandles.clear();  
  55.     face_vhandles.push_back(vhandle[0]);  
  56.     face_vhandles.push_back(vhandle[1]);  
  57.     face_vhandles.push_back(vhandle[2]);  
  58.     face_vhandles.push_back(vhandle[3]);  
  59.     mesh.add_face(face_vhandles);  
  60.   
  61.     face_vhandles.clear();  
  62.     face_vhandles.push_back(vhandle[7]);  
  63.     face_vhandles.push_back(vhandle[6]);  
  64.     face_vhandles.push_back(vhandle[5]);  
  65.     face_vhandles.push_back(vhandle[4]);  
  66.     mesh.add_face(face_vhandles);  
  67.     face_vhandles.clear();  
  68.     face_vhandles.push_back(vhandle[1]);  
  69.     face_vhandles.push_back(vhandle[0]);  
  70.     face_vhandles.push_back(vhandle[4]);  
  71.     face_vhandles.push_back(vhandle[5]);  
  72.     mesh.add_face(face_vhandles);  
  73.     face_vhandles.clear();  
  74.     face_vhandles.push_back(vhandle[2]);  
  75.     face_vhandles.push_back(vhandle[1]);  
  76.     face_vhandles.push_back(vhandle[5]);  
  77.     face_vhandles.push_back(vhandle[6]);  
  78.     mesh.add_face(face_vhandles);  
  79.     face_vhandles.clear();  
  80.     face_vhandles.push_back(vhandle[3]);  
  81.     face_vhandles.push_back(vhandle[2]);  
  82.     face_vhandles.push_back(vhandle[6]);  
  83.     face_vhandles.push_back(vhandle[7]);  
  84.     mesh.add_face(face_vhandles);  
  85.     face_vhandles.clear();  
  86.     face_vhandles.push_back(vhandle[0]);  
  87.     face_vhandles.push_back(vhandle[3]);  
  88.     face_vhandles.push_back(vhandle[7]);  
  89.     face_vhandles.push_back(vhandle[4]);  
  90.     mesh.add_face(face_vhandles);  
  91.     // write mesh to output.obj  
  92.     try  
  93.     {  
  94.         if ( !OpenMesh::IO::write_mesh(mesh, "output.off") )  
  95.         {  
  96.             std::cerr << "Cannot write mesh to file 'output.off'" << std::endl;  
  97.             return 1;  
  98.         }  
  99.     }  
  100.     catch( std::exception& x )  
  101.     {  
  102.         std::cerr << x.what() << std::endl;  
  103.         return 1;  
  104.     }  
  105.     return 0;  
  106. }  

5.运行后会生成一个.off文件。说明执行成功,用openmesh目录下自带的QTviewer可以打开生成的off文件。

0 0
原创粉丝点击