图一 OSG 源程序
把 Plugins 3ds 目录下的文件都拷贝到了 Examples Huds 里面,这样做的原因有
两个
第一:因为我自己不知道模型文件里面的纹理列表在哪里,需要进行多次尝
试和验证,而 Plugins 3ds 生成的是 dll,不方便测试。需要在一个 exe 程序进
行测试。生成的容器的测试环境不如 Examples 方便。
第二:如果自己新建一个工程,在拷贝 Plugins 3ds 文件的,因为 Plugins
3ds 里工程里有依赖原始的 OSG 源码,新的工程里依赖的却是别人编译好的 OSG
dll,这样程序非常容易失败,我开始的时候就这么做的,可是总在创建纹理函数
时抛异常。因为上面两点原因,所以我就把文件放到了 Examples Huds,需要注
意的是:别忘了修改“Example”链接的 lib 文件,因为有可能插件库里的链接
的 lib 和 Example Huds 不一样,这样测试环境就配置好了。
具体的插件的修改
我在 Examples Huds 里,添加了:ReaderWriter3DS.h 头文件,用于后来的
导出类使用。把 ReaderWriter3DS 作为导出类,就是像这样加上:
#ifdef DLL_API
#else
#define DLL_API _declspec(dllimport)
#endif
#pragma once
class DLL_API ReaderWriter3DS : public osgDB::ReaderWriter 这种修饰符。
同时我修改了:
virtual ReadResult readNode(const std::string& file, const
osgDB::ReaderWriter::Options* options) ; const 函数,
因为 const函数里不能对类成员作修改,而我想把 Lib3dsFile *f; 作为
ReaderWriter3DS的成员变量,所以就把这个函数的声明给就改了。3DS的模型格
式比较简单,我很快找到了模型文件的列表,在
osgDB::ReaderWriter::ReadResult ReaderWriter3DS::readNode(const
评论0