这是新版的 N3 SDK:下载链接
跟以往一样, 只包含了Win32平台的源码. Console平台特定代码 (Xbox360, PS3 还有 Wii) 介于法律问题没有包括进去.
这是Apr2009 SDK之后大体的改变:
== 主要新特性
-
XNAMath 在Win32 和Xbox360 平台上的统一支持
-
PS3 支持(不属于公开的SDK, 但是针对GCC 4.x做了一些代码修正) HTTP 文件系统包装现在可以正常工作了, 这允许创建从HTTP服务器加载所有资源的N3应用程序(见testhttpviewer.exe 这个程序示例)
-
支持“二进制XML” 以快速载入大的XML文件(克服TinyXML的缺点)
-
新的“FrameSync” 系统, 适用于主线程和渲染线程以锁定步进(lock-step)的方式运行
-
新的“Jobs” 系统, 用于实现并行化工作(Win32 和Xbox360上的 CPU线程池 PS3上的 SPU)
-
父窗体支持, 现在能够以另一个窗口子窗口的形式进行渲染, 以便把N3嵌入到其它Windows应用程序中去
-
整合FMOD
==基础层
Core
-
新的Debug::StringAtomPageHandler , 可以在浏览器中查看string atom 表
-
优化Ptr<>中的类型转换方法
-
RefCounted 对象支持从内存池分配(现在还不稳定!)
Util
-
Win32StringConverter: UTF-8 和宽字符字符串的转换(现在只有Win32 平台)
-
Util::Array::InsertSorted() 现在返回插入的元素索引
-
新的Util::BitField<> 类允许多于32位的掩码操作
-
移除了老的string atom系统中的 Util::Atom<>, Util::Proxy<>
-
新方法Util::FixedArray<>::Resize()
-
String atom系统的新类: Util::StringAtom, Util::StringBuffer, Util::LocalStringAtomTable, Util::GlobalStringAtomTable
-
新方法Util::Queue<>::Reserve()
-
Util::RingBuffer<> 中增加直接访问的新方法
-
新方法Util::Round::RoundUp()
-
新类Util::SparseTable, 用于有很多空格子的2D表格
-
Util::String:
-
新方法CopyToBuffer()
-
新的经过优化的Tokenize() , 以分隔符填充一个字符串数组, 允许重用一个已经存在的数组对象
-
新的静态包装方法: IsDigit(), IsAlpha(), IsAlNum(), IsLower(), IsUpper(), StrCmp(), StrLen(), StrChr()
-
新的有助于解决“类型双关(type punning)” 的工具函数
IO
-
BXmlReader: “二进制XML 文件”的流读取器(用新的工具binaryxmlconverter3.exe 创建)
-
一些ZIP 文件系统包装的底层优化
-
应用程序根目录之类的东西从AssetRegistry移到Core::CoreServer
-
新类GameContentServer, 用在一些console平台上预备游戏数据
-
加入http:和httpnz: scheme的支持,可以通过N3文件系统从HTTP服务器读取数据
Math
-
Xbox360 和 Win32 数学类统一成XNAMath类
-
底层的性能调整
Memory
-
在Win32平台上试验性的支持内存池
-
在Win32 平台上, 动态分配的内存现在是16字节对齐的(注意: 可能在 Realloc()中有一个很难重现的严重BUG , 有时HeapSize() 会返回一个错误值)
-
新的内存池HTML调试输出Debug::MemoryPageHandler
Threading
-
Threading::CriticalSection 根据"Fast critical sections with timeout" (作者Vladislav Gelfer)重写 (Win32 平台)
-
Threading::Event 现在支持“手动重置(manual reset)” 行为
-
Threading::Interlocked 类现在在Win32和Xbox360平台上使用编译器指令(compiler intrinsics)
-
新类Threading::ThreadBarrier: 在其它所有线程到达障碍(barrier)时才会停止
-
优化Threading::SafeQueue
System
-
新类System::Win32Environment用于访问环境变量(只有Win32平台)
-
Win32Registry 类现在以宽字符读取并转换为UTF-8
-
System::ByteOrder 中对于类型双关的修正
Timing
-
移除MasterTime/SlaveTime 系统, 全局计时(global timing)现在由FrameSync子系统提供
Messaging
-
Message::SetHandled() 原本不是线程安全的, 现在使用Interlocked::Exchange()更新它的状态
-
为了更好地控制HandlerThreadBase子类的消息处理行为, Messaging::AsyncPort进行了重写
-
新的同步消息处理线程类BlockingHandlerThread, RunThroughHandlerThread
Net
Http
-
新类HttpClientRegistry, HttpStream, HttpNzStream 用于实现一个透明的HTTP文件系统, HttpNzStream在客户端使用zlib解压缩以加速下载
Debug
App
-
新的标识符字符串AppTitle 和AppID, 这对于一些console平台是必需的
Jobs
-
这是一个用来在线程池(Win32和Xbox360)或PS3的SPU之间分发任务的新子系统
FrameSync
-
这是一个新的子系统, 在游戏线程与渲染线程之间实现了更好的同步
== 渲染层
CoreGraphics
-
DisplayDevice (Win32 平台)中父窗口相关的东西
-
现在可以在渲染目标(render target)之间共享深度/模板缓冲
-
ShaderServer改为解析一个词典文件( 由 shaderbatcher3.exe工具创建), 而不是像之前那样枚举shader目录下的内容
-
shader变量中移除数组的支持 (shader参数数组不是很好移植)
-
针对PS3平台做了一些结构调整(一些类分成一个基类和一个平台特定的派生类)
-
新的私有方法D3D9RenderDevice: SyncGPU() , 它在Present()中被调用, 用来防止GPU比CPU运行得过于超前(这是驱动内部的”优化”, 某些情况下会导致帧率卡顿)
-
通过清除标记(clear flag)对渲染目标的清空进行更好的控制
-
RenderDevice::SaveScreenshot()方法现需要设置输出流的MIME类型, 这是因为实际的MIME类型可能跟请求的类型不一致
-
加载网格(mesh)文件时不再需要进行字节顺序的转换, 这个操作现在改为在制作流程中进行
-
新类MemoryMeshLoader, 从已有的VertexBuffer 和 IndexBuffer对象创建一个网格(mesh)
CoreAudio 和 Audio
-
CoreAudio 和 Audio子系统已经废弃, 替换成基于FMOD的Audio2子系统, 自然而然地可以”自动”跨所有平台. 不过对于商业项目, 请检查一下FMOD的许可!
CoreAnimation
-
以下类已经从CoreAnimation移除: AnimDrivenMotionSampler, AnimMixer, AnimSampler
-
新的动画数据文件格式: nax3
-
新的动画曲线类型: Velocity, 由AnimDrivenMotion特性使用
Input
Frame
-
针对Light Pre-pass Rendering 做了一些小的改动
-
FramePass 中可以更好的控制渲染目标的清空
-
FramePostEffect:全屏幕矩形的绘制已经移到一个新的辅助类RenderUtil::DrawFullScreenQuad中
-
frame shader现在根据需要加载
-
LightServer类: LightPrePassServer实现了light pre-pass rendering (延迟着色的一种变体, 现在只在PS3平台上实现)
Animation
-
动作评估(anim evaluation)已经“任务化(jobified)”
-
Animation 子系统中没有一点AnimDrivenMotion 特定的代码了 (现在这个通过一个包含速度键(velocity key)的新动画曲线类型进行处理)
Audio2
Characters
-
骨骼评估(skeleton evaluation)已经“任务化”
-
对于PS3, 蒙皮运行在SPU上
-
整个character子系统已经优化(差不多重写了)
InternalGraphics
-
使用子系统使渲染线程和游戏线程以锁定步进的方式运行(这基本上解决了所有卡帧的问题)
-
浏览器中通过GraphicsPageHandler显示更多的调试信息
-
attachment系统的很多修正 (角色关节附属物: 剑, 盾等…)
-
对更新/渲染循环(Update/Render-Loop)进行重构, 改善并行化支持. 基本思想是在更新对象和渲染对象之间创造更多的空间, 使得异步工作有更多的机会按时完成渲染所需数据
Graphics
-
增加一些在主线程和渲染线程间通信的新消息(见graphicshandler.cc)
Models
Particles
-
一些方便移植所做的结构调整
-
粒子的更新已经“任务化”
RenderModules
RenderUtil
-
新的辅助类RenderFullScreenQuad
-
新的辅助类 NodeLookupUtil 用于在层级结构中查找一个 ModelNodeInstance
Resources
== 移进Addon的:
- fx
- network
- locale
- posteffect
- ui
- vegetation
- vibration
- video
== ExtLib中的新东西:
尽情享受吧!
分享到:
相关推荐
Nebula3 命令行应用程序向导 有建议的加我MSN交流
Nebula模拟器Nebula模拟器Nebula模拟器Nebula模拟器
Nebula3的应用程序向导, 咋时先做个命令行的方便初学者学习用 有建议的加我MSN交流
这个插件暂时只能导出nvx2的网格,如果需要导出n3格式的文件,请关注后续的开发
3-3 Nebula Graph v3 ——开源分布式高性能图数据库
A game engine and framework. It is built to be portable to various platforms, including the consoles and the iPhone. It has been used in commercial projects.
nebula3中加载xml格式的n3文件,代码修改在各个ModelNode类型的节点类中
图数据库nebula的前端展示界面
Nebula 提供了一组自定义的SWT控件和其它UI组件。 将nebula.zip解压到eclipse的安装目录下的dropins文件夹中clean方式重启eclipse
NebulasDB JS-SDK 1. 介绍 1.1 NebulasDB NebulasDB是一款基于、去中心化、非关系型的数据库, 并且提供了JS-SDK、客户端控制台方便开发进行数据操作。 1.2 JS-SDK JS-SDK (Javascript-Software Development Kit ) ...
java-nebula客户端集成(csdn)————程序
nebula图数据库V2.6.0
常用的模拟器. 这是汉化版的,用着比较方便.
这是Nebula PaperClips的打印例子,PaperClips的版本为1.0.4。
docker手动搭建3台nebula分布式集群,持久化配置的meta、graph、storage配置文件demo。
nebula3 是一个游戏引擎和开发框架,可移植的特性支持多平台,包括 iPhone。
Nebula2的游戏架构,对了解引擎的架构有些帮助
脱壳的nebula225b 修正处理了无法扫描到全部游戏子Rom问题|汉化修正绿色特别版
内容来源:threathunter.cn https://www.threathunter.cn/nebula.html 文档地址:http://www.bookstack.cn/books/TH-Nebula 书栈官网:http://www.bookstack.cn 书栈开源:https://github.com/TruthHun 分享,让...
nebula-graph-3.2.0.el7.x86_64 安装包,包含客户端console