您的位置:首页 > 其它

Nebula3 SDK (Apr 2009)更新内容

2009-04-15 22:17 357 查看
相对于Sep 2008SDK的新内容:
工具

新命令行工具: archiver3 – 为多平台文件档案生成所做的包装

新命令行工具: n2converter3 – 转换.n2 文件到.n3文件(Nebula 图形对象)

新命令行工具: suiconverter3 –SUI (simple user interface)资源的批处理转换器, 现在只在Wii平台有效

新命令行工具: synctool3 – 从版本服务器上同步本地工程目录(只对我们内部的开发流程有用)

新命令行工具: countlines3 – 对N3 源代码行数进行统计并生成Excel兼容的csv文件(comma separated values)

基础层

更新Wii平台到最新(当然这不属于公开的SDK)

Util::CmdLineArgs 更名为Util::CommandLineArgs

Scripting 子系统移入一个addon

Remote 子系统移入一个addon

新宏__ConstructInterfaceSingleton / __DestructInterfaceSingleton

做为Maya插件编译时采用新的标准定义__MAYA__

新内容: ExitHandlers (见Core::ExitHandler)

新的底层调试方法Core::SysFunc::MessageBox()

新内容"根目录(root directory)" (见 CoreServer::SetRootDirectory)

为了在N2/Mangalore中使用N3的代码所做的各种各样的改变 (N2 现在基于很少一部分的N3基础层)

SizeT 和IndexT 现在是有符号的了(为了兼容N2/Mangalore不得不这样)

IO::Console 现在是一个InterfaceSingleton

各种HTML调试处理(handler) 页面的表格可以按列进行排序

Debug::DebugServer 现在是一个InterfaceSingleton

加入一个最小的Debug::HelloWorldRequestHandler 做为HttpRequestHandler 的示例

好用的新方法Http::HtmlPageWriter::TableRow2(), 结省创建两列HTML表格时所需要的代码量

加入 Http::HttpClient 类, 允许发送请求至HTTP服务器

Http::HttpInterface 现在是一个InterfaceSingleton 并且从Interface::InterfaceBase派生

新类Http::HttpRequestWriter

新类Http::HttpResponseReader

为HttpServer加入一个"单线程模式"

加入一个新类InterfaceBase 和InterfaceHandlerBase

把IOInterface相关的移到IO 下

新类Debug::ConsolePageHandler, 在web服务器上显示命令行输出

Zip 文件系统应归于档案文件系统, ZIP支持做为一个特例(Wii上使用 ARC文件代替)

ZipFileSystem 现在是一个InterfaceSingleton (没有增加各线程的内存消耗)

为IO::FileTime增加一个"AsString()" 方法

Win360FSWrapper中新的方法: SetFileWriteTime(), GetAppDataDirectory(), GetProgramsDirectory()

IO::ZipFileStream 类移动到io/zipfs

移动路径重定向(path assign)方法从IoServer 移动到新的InterfaceSingleton: IO::AssignRegistry

新的Windows下的标准重定向符(assign): "appdata" 和"programs", 主要用于工具

修正IO::ExcelXmlReader 对于表格包含空单元格时的Bug

新类IO::HistoryConsoleHandler, 捕获命令行输出到一个环形缓冲(Debug::ConsolePageHandler使用)

URI 模式方法从IoServer 移动到IO::SchemeRegistry InterfaceSingleton

从Stream::Open / Stream::Close 中删除临界区

新方法: IO::XmlWriter::WriteComment()

新的float4特殊加载方法: Math::float4::load_float3(), Math::float4::load_ubyte4n_signed()

Math::float4 的向量比较方法更加直观和灵活了

Math::matrix44() 默认构造函数设置自身为单位矩阵(Math::float4的默认构造函数仍然为空!)

Math::quaternion的新的从float4构造的构造函数

从scalar.h移动许多数学方法到d3dx9_scalar.h , 使平台特定的优化成为可能

Memory::Heap 构造函数现在接受初始化和最大堆大小

Memory::Heap的内存泄露检测 (还不是很令人满意)

移除全局堆: SmallBlockHeap, LargeBlockHeap, StringHeap

加入全局堆: PhysicsHeap, AppHeap, StringObjectHeap, StringDataHeap

试验性的Win360MemoryPool新类

Messaging::AsyncPort: 现在可以在已经打开的端口(port)中加入消息处理器(message handler)

加入"延迟处理(deferred handled)" 标记到Messaging::Message (用于渲染线程中的CreateEntity消息在加载完之前保持履行职责)

包装套接字和TCP/IP 类使Wii上的"TCP/IP-over-HIO2-Tunneling" 成为可能

System::Win32Registry(): 把Read() 方法分成ReadString() 和ReadInt()

System::ByteOrder::Convert<TYPE>() 现在返回一个值, 加入新方法System::ByteOrder::ConvertInPlace<TYPE>()

新方法Threading::Interlocked::Exchange() 和 CompareExchange()

Win360Thread::IsRunning() 现在使用Win32 函数GetExitCodeThread() 来检线程是否运行中

新方法Threading::Thread::YieldThread() (放弃时间片)

新类Threading::SafeFlag

新内容: Timing::MasterTime 和Timing::SlaveTime, 主线程有一个MasterTime 对象, 分发"main time" 到附属线程 (如渲染线程)

Util::Array 现在有一个MinGrowSize 和MaxGrowSize 来防止巨大数组的内存浪费

试验性的新类Util::Delegate (不幸的是在Codewarrior中不能工作)

新方法Util::FixedArray::AsArray()

新方法Util::Dictionary::KeysAs<TYPE>(), 和Util::Dictionary::ValuesAs<TYPE>()

新类 Util::PriorityArray (我想应该不需要了吧)

新类Util::RandomNumberTable

新类Util::Round

很多Util::String 不常用的方法不再内联

渲染层

新的Character子系统(模块化的角色渲染, N2的Character3系统的重写)

新的CoreFX 子系统(从Mangalore的 VFX(visual effects) 子系统引入) -> 注意: 会被移进addon

新的CoreUI 和UI 子系统(简单的用户界面系统) -> 注意: 会被移进addon

新的Video 子系统(视频播放, 现在只有Xbox360的) ->注意: 会被移进addon

新的Particles 子系统(从头重写) -> 注意: 会被移进addon

新的PostEffect 子系统(从Mangalore引入) -> 注意: 会被移进addon

新的Vibration 子系统(游戏手柄震动支持) ->注意: 会被移进addon

新的 Vegetation 子系统(Drakensang的植被渲染, 现在在N3下不可用) -> 注意: 会被移进addon

新内容: RenderModules, 为渲染线程增加功能的干净框架(xoyojank: 正愁写demo咋办呢, 哈哈)

新内容: AnimEvents, 动作可以在特定的采样时间触发一个事件 (如在合适的时间播放脚步声)

新内容: 角色附属物(attachments) (剑什么的...)

Animation系统的很多bug修正和改进

新内容: AnimDrivenMotion, 以当间动作来同步角色的移动

新内容: 消息批次, 以客户端消息打包的方式彻底解决线程间的通信开销

新方法: Audio::AudioEmitter::Pause() 的Resume()

新方法: AudioDevice::SetGlobalVariable() / GetGlobalVariable()

加入/修正Xbox360 对 XACT 音频类的支持

新类: MultipleRenderTarget, 包装了MRT 渲染

新类: MouseRenderDevice (现在只在Wii实现了)

加入GPU 实体(instance)渲染

RenderTarget: 加入解析深度缓冲到纹理的支持(只有Xbox360才行)

RenderTarget: 加入创建张CPU可以快速访问的解析纹理的支持

加入"late-binding" 到 ShaderVariableInstance

D3D9StreamTextureLoader 和D3D9Texture 从win360 移至d3d9, 因为现在有Xbox360的特定版本了

Debug::MeshPageHandler 可以在web浏览器显示顶点数据

Debug::TexturePageHandler 现在显示当前资源状态(Initial, Pending, Loaded, 等等...)

新类CoreGraphics::MemoryMeshLoader

CoreGraphics::Shape 重命名为 CoreGraphics::RenderShape (因为CodeWarrior对于不同目录中的文件名会产生混淆)

Frame::FramePass 和 Frame::FramePostEffect中加入Multiple Render Target的支持

Graphics::Display::GetDisplayMode() 现在返回CoreGraphics::DisplayDevice设置的参数 (可能跟需要的显示模式不一样)

Graphics::GlobalLightEntity: 所有光源参数移动到渲染线程创建

Graphics::GraphicsEntity: 内部实体(entity)只有在资源在渲染线程中载入完毕后处理才可以

Graphics::GraphicsInterface 现在使用消息批次来跟渲染线程通信(一帧只发送一次消息)

Graphics::Handle 现在是一个智能指针(解决了渲染线程实体过早销毁的问题)

Graphics::ModelEntity: 支持AnimDrivenMotion

Input::GamePad 的新方法: ButtonAsString(), AxisAsString(), GetStateAsInputEvents()

InternalGraphicsEntities 由InternalGraphicsServer 进行注册

InternalGraphicsServer 的许多改变和需要适当整理的InternalModelEntity

为全局光加入双面光照支持

新类: Models::AnimatorNode 和Models::AnimatorNodeInstance (Nebula2 遗留)

新类: Models::CharacterNode 和 Models::CharacterNodeInstance, 使角色渲染与模型结点结合到一起

ModelNode的加载基本上重写了(新的.n3 文件格式, 还有n2converter3 工具用于转换.n2 文件到.n3)

新方法Model::OnResourcesLoaded(), 方便Model子类在资源加载完毕时做初始化工作

新方法用来在 ModelInstance中查找ModelNodeInstance

新类Models::StreamModelLoader

Models命名空间下的许多小的更改

新类: RenderUtil::MouseRayUtil, 转换2D鼠标位置到世界空间的3D射线

新方法: ResourceManager::CheckPendingResources(), 在当前没有等待加载的资源时返回true

SharedResourceServer: 几个方法现在创建共享资源时接受ResourceLoader 对象

这里还有一些针对Foundation和Render层的有趣的代码统计 (希望图片没有缩放的太失真):












"General"为平台无关的代码, "Win360" 是Win32 和Xbox360通用的代码.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: