Cocos2dx 3.x 图形学渲染系列二十七概要1.docVIP

  • 6
  • 0
  • 约1.88万字
  • 约 16页
  • 2017-07-02 发布于湖北
  • 举报

Cocos2dx 3.x 图形学渲染系列二十七概要1.doc

Cocos2dx 3.x 图形学渲染系列二十七概要1

Cocos2d-x 3.x 图形学渲染系列二十七 游戏中使用的模型为了防止产品发布后被破解,程序再做模型导出插件时对模型进行了加密处理。针对模型加密的方式非常多,通常的做法是通过已经编写的模型插件方式对其加密,类似AutoDesk提供的FBX模型插件,它的内容是二进制的。在Cocos2d-x引擎中的模型也做了加密处理,它就是c3b模型文件。模型实现过程是通过工具fbx-conv转化FBX模型文件得到的,这说明模型之间是相通的。c3b模型文件也是二进制的,本章给读者解密Cocos2d-x引擎使用的c3b模型文件如何生成二进制加密格式的。 本节真正涉及到模型文件的加密处理,加密的处理方法非常多:一种是对其内容进行二进制加密;还有就是对模型文件开头、中间、结尾等增加二进制标示加密。c3b模型本身是二进制的,然后再在文件开头处进行文件标示加密,加密方式是通过自定义的字符串,在Cocos2d-x引擎中可查看到读取c3b模型文件代码段,截取引擎中加密的代码段如下所示: [cpp] view plain copy 在CODE上查看代码片派生到我的代码片 // 读取文件标示 char identifier[] = { C, 3, B, \0}; char sig[4]; if (_binaryReader.read(sig, 1, 4) != 4 || memcmp(sig, identifier, 4) != 0) { clear(); CCLOG(warning: Invalid identifier: %s, path.c_str()); return false; } 这段代码作用是加载模型时需要验证的加密标示,现在打开一个c3b模型文件给读者展示就一目了然了。文件内容如下图: 在第一行有三个字母“C3B”,这就是在模型中加的加密代码标示,加密的字符串,是通过工具fbx-conv转化时生成的,下面给读者进行加密模块的代码编写。 下面开始Cocos2d-x引擎加密工具的编写,相对来说这个模块架构比较简单,整个工程代码存放网址是: 代码架构图如下: 可以看到两个窗口中都出现了许多命令行,这些命令行是在一个类里面通过代码设置的,完整代码如下所示: [cpp] view plain copy 在CODE上查看代码片派生到我的代码片 #ifndef FBXCONVCOMMAND_H #define FBXCONVCOMMAND_H //#define ALLOW_INPUT_TYPE #include Settings.h #include string #include log/log.h namespace fbxconv { struct FbxConvCommand { constint argc; constchar **argv; int error; bool help; Settings *settings; log::Log *log; FbxConvCommand(log::Log *log, constintargc, constchar** argv, Settings *settings) : log(log), argc(argc), argv(argv), settings(settings), error(log::iNoError) { help = (argc = 1); settings-flipV = false; settings-packColors = false; settings-verbose = false; settings-maxNodePartBonesCount = 40; settings-maxVertexBonesCount = 4; settings-forceMaxVertexBoneCount = true; settings-maxVertexCount = (115)-1; settings-maxIndexCount = (115)-1; settings-outType = FILETYPE_C3B; settings-inType = FILETYPE_AUTO;

文档评论(0)

1亿VIP精品文档

相关文档