- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
                        查看更多
                        
                    
                游戏设计  内容管理(ContentPipeline).doc
                       游戏开发中,往往遇到一些游戏内容方面的问题,程序寻找不到资源,程序占用内存过大,加载进度不满意等,游戏内容管理是游戏开发中比较容易忽视的一块,一个好的内容管理系统,可以很轻松让游戏添加各种扩展修改,提升性能。
   在开发引擎中,翻阅过很多资料,让我印象最深刻的便是xna,这里我想分成 ContentManager 和 ContentPipeline 去具体说明,在最后我会提供简易ContentPipeline代码.
?
?
   Soure Asset就是自定义的档案,经过Importer读入成Content DOM Type,然后再经过Processor转换成Output Type,然后编译成XNB档案,最后在游戏执行时读入XNB档。
   白话一点的说就是就是一个档案藉由Importer读入成一个物件,在经过Processor转换成另一个物件, 以上这些动作都是在Design Time,也就是在电脑上执行到编译成XNB档为止,然后才是游戏的编译,举个例子,比如png,jpg,bmp等资源首先会通过content processor转换成特定的内容流,在游戏运行时通过read(BinaryReader)方法读取成指定类型资源,这样做runtime不需要对图片进行额外的解码,提升了读取效率。
?
   以下我以简化的content pipeline对内容预处理做一个分析,首先是它的架构图.
   
?
  如果我们对一个类型进行处理, 首先要调用Manager中的Process方法,该方法会通过要处理的实例类型获得对应的处理器,最后并返回流.
  
        public static Stream Process(object target)
        {
            Stream stream = new MemoryStream();
            ContentWriter writer = new ContentWriter(stream);
            // 得到处理器
            ContentProcessor processor = GetProcessor(target.GetType());
            // 写入类型
            writer.Write(target.GetType().FullName);
            // 写入内容
            processor.Process(writer, target);
            // 完成并返回
            writer.Flush();
            return stream;
        }
    在  //写入类型  这里主要是为了下一章要讲的contentManager::load做准备,load中会首先从内容流中读出type的fullname在转成type并得到对应读取器进行类型还原,在此章中不具体描述。
?
    以上只是一个处理流程,在这个结构中,最重要的就是各种类型的processor了,如果做到一个易用可扩展是我们讲述的重点.
?
    首先我们来看看,基础类型bitmap的处理器.
    
   class ImageProcessor : ContentProcessorBitmap
    {
        protected internal override void Process(ContentWriter writer, Bitmap sender)
        {
            // fiexd type
            int surfaceFormat = 0; // textur2d surfaceFormat 0 = color format
            int mipMap = 1;
            writer.Write(surfaceFormat);
            writer.Write(sender.Width);
            writer.Write(sender.Height);
            writer.Write(mipMap);
            Listbyte colors = new Listbyte();
            for (int y = 0; y  sender.Height; y++) {
                for (int x = 0; x  sender.Width; x++) {
         
                您可能关注的文档
最近下载
- 职业技能竞赛数控车工、数控铣工、加工中心实操训练试题-1.doc VIP
- 低压并网柜技术规范书.doc VIP
- 2025年法官入额考试真题及答案.docx VIP
- 《工程勘察设计收费管理规定》计价格【2002】10号.doc VIP
- 2025年法官入额考试真题及答案.docx VIP
- 《GJ B798-1990-伪装涂料漆膜颜色》.pdf VIP
- 美国纽约摄影学院摄影教材【上下册无密码全版】PDF版.docx VIP
- 职业生涯规划书.docx VIP
- 截屏-节能与新能源汽车技术路线图3.0-2025-10-新能源.pptx
- 2022年二级造价师《建设工程计量与计价实务》(水利)考试题库.pdf VIP
 原创力文档
原创力文档 
                        

文档评论(0)