Eggine(1)整体描述
大体上分4层,底层为上层提供服务
基础工具
    通过封装boost,stl或造轮子,向上提供内存池,字符串操作,文件操作,日志等基础功能。
OpenGL抽象
    gl的皮包骨封装,主要是避免重复状态切换,异常检查,日志输出。
资源管理
    管理例如vbo,fbo,shader,纹理之类可被共享的资源,使用c++11的shared_ptr。
    可以肯定,没有自动化的垃圾回收机制,全手动delete会使开发会进入死胡同。
场景层
    按空间关系组织资源,由于项目对场景管理需求简单,所以没引入什么场景管理算法。
渲染器
    拿到场景提交的Entity(渲染实体),执行渲染。
    这块比较复杂,在保证渲染结果大体准确的前提下还要对效率斤斤计较。
    说是大体准确主要是因为透明和折射,暂时没办法正确处理玻璃杯套玻璃杯那种场景。
需要特别说明的是,代码大量使用延迟方式,很多决策(例如材质的组成,shader的参数)都是到渲染前一刻才决定。
这样的好处是避免重复的gpu操作,渲染前的所有操作都是改变内存中的状态记录,同时改善了代码结构。
相对于立即方式,带来的缺陷也比较明显,需要更多的空间,没有一条清晰主线去跟踪调试。
 
                    
                     
                    
                 
                    
                 
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号