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执行后,各种对象 也就随之被渲染出来了。

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...