OpenVDB 是梦工厂开源的体素数据格式库,虽然是开源的,可是对windows 的支持很是很差。若是想在windows上搞体素的话须要花一番功夫。写一个总结,编译中须要注意的地方。过两天整理好会写一个bat文件来一次性搞定配置。windows
VS工程的创建就是把源代码和头文件按照文件夹的目录结构加到VS的空项目里就行,能够用CMake生成更加方便,目前测试VS08 和 VS 10 都能正确编译, 但你的依赖库和OpenVDB最好使用同一版本的VS编译器,不然编译连接会出错。单元测试
OpenVDB依赖库:
•OPENEXR
•TBB
•Zlib
•CPPUnit(For unittest)测试
TBB直接网上能够下载编译好的lib,是动态连接生成,连接到你的工程便可,其余的库本身在windows上编译就能够,注意OPENEXR若是是静态编译的请在工程的编译选项里加入OPENVDB_OPENEXR_STATICLIBorm
若是有连接错误,那基本上都是代码生成的时候/MT方式和/MD方式选择不对,检查你的依赖库的生成方式,好比都是静态生成,就都选成/MT。编译器
预编译选项:全部的预编译选项都在Platform.h 和PlatformConfig.h里。比较重要的有:it
OPENVDB_PRIVATE:定义了这个宏才能把VDB的API导出。编译
OPENVDB_STATICLIB: 若是你须要把OPENVDB 编译成静态库请必定加上该选项,默认OPENVDB会编成dll,另外该选项还必须在引用VDB的API的工程中定义,好比 OPENVDB的单元测试form
OPENVDB_DLL:编译成dll时须要定义,否则生成的dll会没有lib文件。test
OPENVDB_OPENEXR_STATICLIB:若是OpenExr是静态的,必须加上。配置
编译单元测试须要的CPPUnit库下载源代码以后包含了VS的工程文件,直接打开转换到你的VS版本就能够生成所须要的库文件,仍是须要注意/MT和/MD的生成方式选择,必定要一致。Unittest 工程须要连接OpenExr。
若是你要编译OpenVDB自带的viewer,在windows下是比较困难的,首先请把全部头文件换成glew,而后注意请使用glfw2.0连接glfw,glfw3大幅度修改了API ,另外请在每一个viewer的cc文件以前加入 #include <stdlib.h>