Nebula3 SDK (Apr 2009)更新内容

长平狐 发布于 2012/11/12 11:50
阅读 63
收藏 0

相对于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子系统(模块化的角色渲染, N2Character3系统的重写)
  • 新的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 对象

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

 


 

 

 

"General"为平台无关的代码, "Win360" Win32 Xbox360通用的代码.

 

 


原文链接:http://blog.csdn.net/xoyojank/article/details/4077309
加载中
返回顶部
顶部