文档章节

Nebula3学习笔记(1): 序

rise-worlds
 rise-worlds
发布于 2016/06/20 13:40
字数 942
阅读 6
收藏 0

前言

目前这个引擎只是一个预览版, 很多功能仍在开发当中

硬件需求: 显卡支持ShaderModel3.0

作者Blog: http://flohofwoe.blogspot.com

用到的开源工程

为了避免版本之间的不兼容, 已经在SDK中包含

体系结构一览

  • Nebula3 分成三层, 每一层都是建立在另一层之上的:
    • 基础层: 最底层, 提供了一个图形和音频之下基本的平台抽象. 基础层可以用作任意类型的程序开发平台, 而不仅仅是实时3D程序.
    • 渲染层: 这是中间层, 它在基础层之上另加了许多特性, 像3D渲染, 音频, 物理和场景管理等.
    • 应用程序层: 这是最高的一层, 提供了一个完整的游戏框架, 这使得开发人员可以集中精力在游戏逻辑上, 而不用对关心各种细节实现.
  • Nebula3 会跟Mangalore 合为一个整体, Mangalore的各种子系统会集成到Nebula3的适合它们的层中去.
  • Nebula3 比 Nebula2更趋向于使用C++.
  • Nebula3通过引用计数和智能指针实现了对象生命周期的管理.
  • Nebula3的新对象模型使用一个4 byte的基类来代替Nebula2中70+ bytes的.
  • RTTI更高效, 更易用.
  • Nebula3仍然不使用C++异常, RTTI和STL(所有这些不是降低性能就是降低便携性).
  • 根据类名来创建对象更快更易用.
  • Nebula3 避免使用C Lib, 去除了附加的代码层.
  • Nebula3 使用LUA 代替TCL作为标准的脚本语言(当然也可以增加其它脚本语言的支持)

基础层

  • App 包含各种Application类
  • Attr 属性注册
  • Core                Nebula3的对象模型
  • Debug 程序内存转储和基于HTTP的调试信息(这个真是个好东西, 第一次听说)
  • Http 实现了HTTP服务器和客户端, 这样可以在浏览器中实时查看调试信息
  • IO 输入输出系统, 很方便
  • Math 基于C++的数学库, 没什么特别的
  • Memory 实现了定制的内存分配器
  • Messaging 消息定义
  • Net 最基本的基于TCP协议的C/S架构, 更多的功能会在高层的网络扩展中给出
  • Scripting 脚本系统
  • System 硬件平台和特定操作系统相关的一些特性
  • Threading 多线程
  • Timing 时间/定时器管理
  • Util 工具库, 包括各种容器, 数据结构, 还有一个强大的string类(抛弃STL吧!)

渲染层

  • CoreGraphics 图形库核心类
  • Frame 基于帧的处理, 如RenderTarget, PostProcess等
  • Graphics 一些实体类型定义, 如Camera之类
  • Input 输入设备, 就是鼠标键盘手柄…..
  • Lighting 光照处理, 包括阴影算法(竟然要SM3.0@_ @)
  • Models 骨骼模型&粒子系统
  • RenderUtil 目前就只有一个Maya的摄像机…..
  • Resources 资源管理器

应用程序层

application_win32工程就是一个简单的游戏, 框架, 但是已经包含了许多特性, 如果物理, 数据库等. 不过好像还缺少GUI系统.

插件

目前有三个, 基于ODE的物理引擎, 基于SQLite的本地数据库, 基于nebula2模型的骨骼模型系统

编译

没什么好说的, 打开.sln直接编译就成了, 没见过这么简单的开源工程^_^

 

就以这个程序做为测试程序的模板吧

1: #include "stdneb.h"
 2: #include "core/debug.h"
 3: #include "core/coreserver.h"
 4: #include "core/sysfunc.h"
 5: 
 6: using namespace Core;
 7: 
 8: void
 9: __cdecl main()
10: {
11: 	Ptr<CoreServer> coreServer = CoreServer::Create();
12: 	coreServer->SetAppName("Nebula3 Hello World!");
13: 	coreServer->Open();
14: 
15: 	n_printf("Hello World\n");
16: 	system("pause");
17: 
18: 	coreServer->Close();
19: 	coreServer = NULL;
20: 
21: 	Core::SysFunc::Exit(0);
22: }

本文转载自:http://www.cnblogs.com/flying_bat/archive/2008/12/14/1354895.html

上一篇: 中国灌水通史
下一篇: ping的源代码
rise-worlds

rise-worlds

粉丝 3
博文 1755
码字总数 0
作品 0
深圳
程序员
私信 提问

暂无文章

最简单的获取相机拍照的图片

  import android.content.Intent;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import andr......

MrLins
今天
5
0
说好不哭!数据可视化深度干货,前端开发下一个涨薪点在这里~

随着互联网在各行各业的影响不断深入,数据规模越来越大,各企业也越来越重视数据的价值。作为一家专业的数据智能公司,个推从消息推送服务起家,经过多年的持续耕耘,积累沉淀了海量数据,在...

个推
今天
8
0
第三方支付-返回与回调注意事项

不管是支付宝,微信,还是其它第三方支付,第四方支付,支付机构服务商只要涉及到钱的交易都要进行如下校验,全部成功了才视为成功订单 1.http请求是否成功 2.校验商户号 3.校验订单号及状态...

Shingfi
今天
4
0
简述Java内存分配和回收策略以及Minor GC 和 Major GC(Full GC)

内存分配: 1. 栈区:栈可分为Java虚拟机和本地方法栈 2. 堆区:堆被所有线程共享,在虚拟机启动时创建,是唯一的目的是存放对象实例,是gc的主要区域。通常可分为两个区块年轻代和年老代。更...

DustinChan
今天
6
0
Excel插入批注:可在批注插入文字、形状、图片

1.批注一直显示:审阅选项卡-------->勾选显示批注选项: 2.插入批注快捷键:Shift+F2 组合键 3.在批注中插入图片:鼠标右键点击批注框的小圆点【重点不可以在批注文本框内点击】----->调出批...

东方墨天
今天
6
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部