Skip to content

Archive

Archive for March, 2013
一年半之前,在开发KlayGE 4.0的时候,郭鹏就已经设计了一个资源载入系统,可以解决异步载入和重复载入的问题。但我只是实现了一个很粗略的异步载入。随着场景复杂度的需求越来越高,一个完善的资源载入系统也就成为必需。顺着之前的设计思路,我最近终于完成了实现。 目标 KlayGE的资源载入系统有几个设计要求: 至少支持Texture、Model、Effect、Font和Post Processor这五种资源,并能快速扩展支持新的资源。 可以选择同步或异步载入。 不重复载入资源,以减少浪费。 自动化管理,不需要手动指定资源ID,尽量不需要显式删除。 资源不需要单根继承。 异步无阻塞载入。 之前的ResLoader能支持2,4和5,部分支持1,并以很 ...
经过前两次实验,大部分C++11里有的boost组件都被替换成了C++11中相应的。剩下的还有random库和bind/function/mem_fn/ref/smart_ptr这一组。看来,到了不得不改代码的时候了。 random 在第一次实验里提到过,random虽然在boost和C++11都有,但接口不相同,所以原先我用Boost.Random实现的代码,无法直接替换成C++11的。翻了一遍boost文档,发现现在的boost其实有实现了一套名字和C++11相同的组件,于是我重写了所有用到random的地方,用和C++11兼容的代码,就解决了这个问题。好在random用得不多,改几个地方就都好了。 bind/function/mem_fn/ref/smart_ptr 这几个组件相互依赖,要么全换,要么不换。再加上牵扯面非常广,修改起来几乎都 ...