3D引擎:Horde3D:Cocos 和 Horde3D渲染部分的设计比较

其实 渲染引擎,所有的 步骤无非就是:
    在 init里 :
   创建shader
   定义好 要渲染对象的 顶点属性 
   bind vertex buffer
   glClearColor

    在Loop循环里
   set uniforms
    bind framebuffer
    glEnable 各种 管线通道
    glDraw 对象
    unbind vertex buffer
    unbind framebuffer

————————————————
对以上的步骤流程:
  Cocos 是面向渲染对象的,而 Horde3D面向的则是渲染接口。即前者面向对象,后者面向接口

什么是 面向渲染对象?
 假如 我们渲染一个 对象, 就是严格采用上述步骤流程,  对象 定义好顶点属性后,将上述流程的方法封装 ,属性加方法 就是这个对象。
在Cocos中,每个渲染对象都是 一个 node, 那么有一个rootNode,其它的 渲染对象都存在于 以这个 rootNode为根节点的树形结构里
那么,在 render方法里,就按照这个树形结构进行遍历,然后调用每个节点的 相应方法对每个节点渲染

什么是 面向渲染接口?
Horde3D 在底层中(确切的说 在 RenderBase.h中),定义了 完成上述步骤流程的所有 方法,每个方法都是对 opengl Api  和 一些属性的简单封装。
其中,有一系列draw方法,有draw 基本图形的primitive的,有draw Logo 这种overlay的,有draw quard的,有 draw lighting的,有draw mesh的
在Horde3D中,每个渲染对象也是 一个 node,也有一个rootNode,只不过,在"init"里, 每个对象的 属性被 解析(所有的对象都是 以文件的形式被加载,然后通过xml等 被解析)存储在不同的类别的属性里面。  不同类别的属性 代表着 调用的 draw方法也不一样,比如 draw mesh的 一般是 模型类,而 draw overlay 就是简单的logo。
之后,Camera这个对象会定义 多个 stage,每个stage就是一次渲染流程, 这些stage会 命令 渲染类去 执行不同 的draw方法。
draw执行后,各种对象 也就随之被渲染出来了。

你可能感兴趣的:(3D引擎,OpenGLES)