当前位置: 首页 > 工具软件 > Horde3D > 使用案例 >

3D引擎:Horde3D:小感

宗增
2023-12-01
我们在 使用 Horde3D 写一个  Demo时, 
    真正的只需要与Horde3D的 以下几个类打交道就行了:
    1  SceneManager类,2 ResourceManager类  
    通过 它们提供的接口 来添加资源类 和 节点
    每添加一次, 都会创建一个 这个类的引用

    3 Resource类
      不同的Resource都继承该类  
        这些Resource的子类通过   factoryFunc初始化,并 保存了 资源xml文件的路径 

     在H3DUtils类里,有一个方法, 根据这些路径,解析出 该Resource类的所有属性(xml里定义好的)。

     Resource 子类对象 会依附在 SceneNode 上,或者 直接  showOverlay这样的方法 画出来

   4 SceneNode类

  所有的 SceneNode子类都继承自 SceneNode类
  每次添加这些类时, SceneNode子类 都会挂在 RootNode这么一个 根节点下。在add的时候, 会根据其依附的Resource 子类,对 SceneNode进行初始化

   SceneNode的 初始化 都需要经过 SceneNodeTpl的这么一个结构体。  之所以需要 一个 Tpl来初始化,是因为 SceneNode的子类 都是 私有构造。Horde3D采用工厂模式来构造它们
   

   5 Renderer类
   MainLoop里  会根据依附在Camera节点类的 Pipeline 资源 来 得到
   渲染的步骤:
    所以 Renderer类的 render方法  需要 接受一个Camera节点

       

   Horde3D 真正做到了 创建的场景画面 与 程序分离
     
     

   我们使用的 材质, shader特效, 场景物体,甚至渲染 流程 都是写在xml里的。


   渲染时, 会根据 你在xml里的渲染步骤,来 进行 , 
   1  更新场景物体位置
   2  使用shader program 
   3 bind  VBO  IBO  
   4  bind  off/on screen buffer
   5 draw 
   这些常见的 渲染命令深度


Renderer类 其实 封装了 一个 更底层的渲染类 RenderDevice, 在这个类 里
    完成了 创建shader, 创建 VBO, IBO  FrameBuffer等工作  其       createPrimitives 创建了基本的几何形状等等

——————————————————————————————————————————————
如果你对3D渲染/技术有浓厚的兴趣,同时又是具备了极客、开源精神的从业人员
欢迎加入群:  445038170 
希望我们能一起做点什么
 类似资料: