内容管道的设计十分超前乃至於至今看来都还算是一个比较新颖的资源处理方式。
本章将深入讲解内容管道的作用及Xnb格式ttf字体库分析
本节我们将以图像为例,简述内嫆管道的处理及使用
假设我们有一张图片1.jpg。
从以上流程可以看出复杂及密集的解压缩、解析过程全部在编译阶段就完成了。
游戏运行階段只需要简单的读取统一的xnb格式ttf字体库并直接反序列化即可读取数据
因此得到了加载优化的效果。
在本节中我们将深入讲解Xnb格式ttf字體库的组成。
因为Xna4.0是最后版本也是使用最为广泛的一个版本,因此我们仅对此版本的Xnb格式ttf字体库进行解析
首先,Xnb格式ttf字体库前3位Byte值以 'XNB' (沒有单引号)作为文件标识头
紧接着第4位Byte有3个可能的值,代表了文件应用于的平台(不同平台文件内容有少许区别)分别是:
第5位Byte代表了Xna格式ttf字体库版本,从1到5分别代表了:
这里我们假设值永远为5
第6位Byte值代表了内容表示方式,分别为:
第7位-第10位是一个UInt32值代表了文件总大小(磁盘真实存储大小),但有如下内容需要注意:
若使用了压缩此值为压缩后的大小加上所有文件头内容的大小。
(以下内容为分支内嫆根据第6位表示是否压缩进行分支,红色表示压缩蓝色表示未压缩)
第11位-第14位是一个UInt32值,代表了未压缩的文件总大小
根据类型读取器数量进行循环。
循环顺序读取内容如下:
Int32值代表了类型读取器版本,通常是0
循环完毕后紧跟着读取一个 7BitEncodedInt,代表共享资源数量
然后讀取原始资源数据,这里就是具体的反序列化内容了加入第4节中就用了Texture2D作为例子。
原始资源数据读取完毕后开始循环读取共享资源内嫆,这里是原始资源数据中所需要的公共内容
循环内容根据原始资源数据而定。
共享资源内容读取完毕后将共享资源数据依次绑定回原始资源数据内。
内容管道的设计十分超前乃至於至今看来都还算是一个比较新颖的资源处理方式。
本章将深入讲解内容管道的作用及Xnb格式ttf字体库分析
本节我们将以图像为例,简述内嫆管道的处理及使用
假设我们有一张图片1.jpg。
从以上流程可以看出复杂及密集的解压缩、解析过程全部在编译阶段就完成了。
游戏运行階段只需要简单的读取统一的xnb格式ttf字体库并直接反序列化即可读取数据
因此得到了加载优化的效果。
在本节中我们将深入讲解Xnb格式ttf字體库的组成。
因为Xna4.0是最后版本也是使用最为广泛的一个版本,因此我们仅对此版本的Xnb格式ttf字体库进行解析
首先,Xnb格式ttf字体库前3位Byte值以 'XNB' (沒有单引号)作为文件标识头
紧接着第4位Byte有3个可能的值,代表了文件应用于的平台(不同平台文件内容有少许区别)分别是:
第5位Byte代表了Xna格式ttf字体库版本,从1到5分别代表了:
这里我们假设值永远为5
第6位Byte值代表了内容表示方式,分别为:
第7位-第10位是一个UInt32值代表了文件总大小(磁盘真实存储大小),但有如下内容需要注意:
若使用了压缩此值为压缩后的大小加上所有文件头内容的大小。
(以下内容为分支内嫆根据第6位表示是否压缩进行分支,红色表示压缩蓝色表示未压缩)
第11位-第14位是一个UInt32值,代表了未压缩的文件总大小
根据类型读取器数量进行循环。
循环顺序读取内容如下:
Int32值代表了类型读取器版本,通常是0
循环完毕后紧跟着读取一个 7BitEncodedInt,代表共享资源数量
然后讀取原始资源数据,这里就是具体的反序列化内容了加入第4节中就用了Texture2D作为例子。
原始资源数据读取完毕后开始循环读取共享资源内嫆,这里是原始资源数据中所需要的公共内容
循环内容根据原始资源数据而定。
共享资源内容读取完毕后将共享资源数据依次绑定回原始资源数据内。
内容管道的设计十分超前乃至於至今看来都还算是一个比较新颖的资源处理方式。
本章将深入讲解内容管道的作用及Xnb格式ttf字体库分析
本节我们将以图像为例,简述内嫆管道的处理及使用
假设我们有一张图片1.jpg。
从以上流程可以看出复杂及密集的解压缩、解析过程全部在编译阶段就完成了。
游戏运行階段只需要简单的读取统一的xnb格式ttf字体库并直接反序列化即可读取数据
因此得到了加载优化的效果。
在本节中我们将深入讲解Xnb格式ttf字體库的组成。
因为Xna4.0是最后版本也是使用最为广泛的一个版本,因此我们仅对此版本的Xnb格式ttf字体库进行解析
首先,Xnb格式ttf字体库前3位Byte值以 'XNB' (沒有单引号)作为文件标识头
紧接着第4位Byte有3个可能的值,代表了文件应用于的平台(不同平台文件内容有少许区别)分别是:
第5位Byte代表了Xna格式ttf字体库版本,从1到5分别代表了:
这里我们假设值永远为5
第6位Byte值代表了内容表示方式,分别为:
第7位-第10位是一个UInt32值代表了文件总大小(磁盘真实存储大小),但有如下内容需要注意:
若使用了压缩此值为压缩后的大小加上所有文件头内容的大小。
(以下内容为分支内嫆根据第6位表示是否压缩进行分支,红色表示压缩蓝色表示未压缩)
第11位-第14位是一个UInt32值,代表了未压缩的文件总大小
根据类型读取器数量进行循环。
循环顺序读取内容如下:
Int32值代表了类型读取器版本,通常是0
循环完毕后紧跟着读取一个 7BitEncodedInt,代表共享资源数量
然后讀取原始资源数据,这里就是具体的反序列化内容了加入第4节中就用了Texture2D作为例子。
原始资源数据读取完毕后开始循环读取共享资源内嫆,这里是原始资源数据中所需要的公共内容
循环内容根据原始资源数据而定。
共享资源内容读取完毕后将共享资源数据依次绑定回原始资源数据内。