傲劍游戲工作室

   莫等闲、白了少年头,空悲切! - 劒蚩
posts - 29, comments - 185, trackbacks - 0, articles - 0
  IT博客网 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

3dsMax模型导出插件调试技巧

Posted on 2007-10-04 17:25 劒蚩 阅读(801) 评论(0)  编辑 收藏 引用 所属分类: 游戏制作

    以前调试3dsmax的模型导出插件总是很头疼,因为3dsmax的插件是在启动的时候加载进去,在运行中是无法卸载的,这样每一次修改都得重启3dsmax,而且3dsmax的启动时间还特别长,很是郁闷.昨天晚上没事逛书店,偶然发现一本书在讲3dsmax的导出插件,提到了关于调试的一个小技巧,欣喜若狂,立马回家试验了一下,果然很爽.

    其实很简单,就是再写一个dll,实际的操作都在这个dll里面,每一次导出动作都将实时的加载这个dll,导出完毕再卸载这个dll文件,这样就不用每次都重启3dsmax而可以实时的更新了.

简单的例子:

extern "C"
{
      int Exporter( void );
      typedef int(*CallBackExporter)( const TCHAR *name, ExpInterface *ei, Interface *i, BOOL suppressPrompts, DWORD options );
}

//+-------------&-------------
//+---------------------------&-------------------------
int IGameExporter::DoExport( const TCHAR *name, ExpInterface *ei, Interface *i, BOOL suppressPrompts, DWORD options )
{
       HMODULE hModule;
       hModule = ::LoadLibraryEx( "plugins/BMLExporter.dll", NULL, 0 );
       if( hModule == NULL )
       {
              hModule = ::LoadLibraryEx( "BMLExporter.dll", NULL, 0 );
              if( hModule == NULL )
              {
                     MessageBox( NULL, "加载模块BMLExporter.dll失败.", "", 0 );
                     return 0;
              }
         }

       CallBackExporter pfnExporter = NULL;
       pfnExporter = (CallBackExporter)GetProcAddress( hModule, "Exporter" );
       if( pfnExporter == NULL )
              return FALSE;

       int nRet = pfnExporter( name, ei, i, suppressPrompts, options );
       ::FreeLibrary( hModule );

       return nRet;
}



标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)
 
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
 
相关链接: