Cocos2d-x 3.x 图形学渲染系列总结
来源:互联网 发布:sql sum group by 编辑:程序博客网 时间:2024/05/16 06:17
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》电子工业出版社等。
CSDN视频网址:http://edu.csdn.net/lecturer/144
在前面读者已经学习了对模型的加密操作,在了解了3D加密模型的编写后,下面将代码编译出可执行文件,编译截图如下:
编译最终生成可执行文件目录如下:
接下来开始修改加密的方式,开发者可以自己定义模型的加密方式和模型的扩展名字,首先找到C3BFile.cpp文件,在上节中已经实现了。在这里只把修改的重点函数给读者展示一下,比如把扩展名字改成x3b,首先修改的类文件的save保存函数如下所示:
bool save(Settings * const&settings, modeldata::Model *model) {bool result = false;json::BaseJSONWriter *jsonWriter = 0; model->exportPart = settings->exportPart;if(settings->outType == FILETYPE_ALL || settings->outType == FILETYPE_C3T){std::stringout = settings->outFile;int o = out.find_last_of(".");out = out.substr(0, o+1) + "c3t";std::ofstream myfile;myfile.open (out.c_str(), std::ios::binary);log->status(log::sExportToG3DJ, out.c_str());jsonWriter = newjson::JSONWriter(myfile);(*jsonWriter) << model;delete jsonWriter;result = true;myfile.close();}if(settings->outType == FILETYPE_ALL || settings->outType == FILETYPE_C3B){std::stringout = settings->outFile;int o = out.find_last_of(".");out = out.substr(0, o+1) + "x3b";C3BFile file;file.AddModel(model);file.saveBinary(out);log->status(log::sExportToG3DB, out.c_str());}log->status(log::sExportClose);return result;}
保存的文件名字需要修改成x3b,另一个修改扩展函数中定义的扩展文件名字的代码如下所示:
void setExtension(std::string&fn, constint&type) const {switch(type) {caseFILETYPE_FBX:returnsetExtension(fn, "fbx");caseFILETYPE_G3DB:returnsetExtension(fn, "x3b");caseFILETYPE_G3DJ:returnsetExtension(fn, "c3t");default:returnsetExtension(fn, "");}}
转换保存后的模型文件格式是x3b,这样转换保存后的模型文件格式是x3b,接下来修改加密模块,打开C3BFile.cpp文件,如下所示:
bool C3BFile::saveBinary(const std::string& filepath){_file = fopen(filepath.c_str(), "w+b");// 文件标识//char identifier[] = {'C','3','B','\0'};unsigned char identifier[] = {8,52,67,19};fwrite(identifier, 1, sizeof(identifier), _file);//写入版本fwrite(GPB_VERSION, 1, sizeof(GPB_VERSION), _file);_refTable.writeBinary(_file);if(_models){_models->writeBinary(_file);}_refTable.updateOffset(_file);fclose(_file);return true;}
已经将以前的代码注释掉了,修改成自定义的加密字符串,代码行如下所示:
unsigned char identifier[] = {8,52,67,19};
通过工具fbx-conv生成的x3b模型如下:
这样我们自己也可以对模型进行加密操作。
总结:
针对模型的加密已经完成,在这里也是告诉读者,针对3D模型是如何实现加密的,也是给读者提供了一种思路,程序员自己可以很容易的完成加密处理。模型加密的处理方式也是很多的,比如在模型的中间增加某个字段或者在模型插件中加入多个矩阵换算等等。
后面我会将其整理成书稿出版,敬请期待。。。。。。
1 0
- Cocos2d-x 3.x 图形学渲染系列总结
- Cocos2d-x 3.x 图形学渲染系列一
- Cocos2d-x 3.x 图形学渲染系列二
- Cocos2d-x 3.x 图形学渲染系列三
- Cocos2d-x 3.x 图形学渲染系列四
- Cocos2d-x 3.x 图形学渲染系列五
- cocos2d-x 3.x 图形学渲染系列六
- Cocos2d-x 3.x 图形学渲染系列七
- Cocos2d-x 3.x 图形学渲染系列八
- Cocos2d-x 3.x 图形学渲染系列九
- Cocos2d-x 3.x 图形学渲染系列十
- Cocos2d-x 3.x 图形学渲染系列十一
- Cocos2d-x 3.x 图形学渲染系列十二
- Cocos2d-x 3.x 图形学渲染系列十三
- Cocos2d-x 3.x 图形学渲染系列十四
- Cocos2d-x 3.x 图形学渲染系列十五
- Cocos2d-x 3.x 图形学渲染系列十六
- Cocos2d-x 3.x 图形学渲染系列十七
- 手绘板在数字绘画与设计行业的应用特色
- Extension 与主app共享数据
- web前端优化方法
- linux下vi命令大全
- Unity Animator混合树
- Cocos2d-x 3.x 图形学渲染系列总结
- debian系统下配置爬虫环境
- Android总结之链式调用(方法链)
- 【数据结构】单链表,双端链表,有序链表
- mysql view 视图
- 深拷贝与浅拷贝(Java)
- 123. Best Time to Buy and Sell Stock III(同小米风口的猪)
- 大牛级管家应用Trello:多平台“任务流”共享
- H5图片预览及上传(WEB前端)