永远也不完美的程序

不断学习,不断实践,不断的重构……

常用链接

统计

积分与排名

好友链接

最新评论

引擎关于插件模式开发的思考

AIREngine已经支持插件式的开发,即不需要开发人员在工程上连接某个DLL和lib,直接通过LoadLibrary的形式加载。
这种开发方式好处非常多:
直接通过配置文件可以用指定的动态库,例如渲染器可以使用DX9或者DX11的,不需要在工程中再指定;
如果用到一些第三方的项目,例如speedtree,这样可以根本不同的版本开发不同的插件,例如我们是用speedtree4.2的,按以前的做法,要把speedtree集成到引擎中去,看似没啥问题的,但如果以后要用到speedtree5.0以上呢?这个时候怎么办?那又要把引擎代码大改一次了?利用插件的好处在这里就显得很明显了。

但用插件也会有些问题,特别是第三方项目如speedtree这样的。
有些功能,必须每一帧都要更新,这个还好办,我继续一下一个FrameListener就行了。但有些功能,必须要每个RenderTarget在渲染的时候也要更新,这个就不是FrameListener可以提供的了。其实这个也是一个引擎设计的问题,如何让你自定义的东西在每个RenderTarget中更新一次,是一个值得思考的问题。
我现在初步想到的方案是:定义一个类叫EventListener代替FrameListener,这个类有多个事件,其中一个事件叫RenderTarget_Update,在RenderTarget中Update的时候就会调用这个listener的OnEvent函数。以后如果有更好的方案再代替。

posted on 2012-05-06 11:17 狂烂球 阅读(1893) 评论(2)  编辑 收藏 引用 所属分类: 图形编程

评论

# re: 引擎关于插件模式开发的思考 2012-05-07 13:28 陈梓瀚(vczh)

做插件的两个要点,耦合要低,回调要丰富啊。  回复  更多评论   

# re: 引擎关于插件模式开发的思考 2012-05-08 08:44 liangairan

是,我现在又遇到个新问题,如何把rendertarget的参数传进插件里面。@陈梓瀚(vczh)
  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理