内容简介:Cocos2d-x 3.x 图形学渲染系列总结
笔者介绍: 姜雪伟 , 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模型是如何实现加密的,也是给读者提供了一种思路,程序员自己可以很容易的完成加密处理。模型加密的处理方式也是很多的,比如在模型的中间增加某个字段或者在模型插件中加入多个矩阵换算等等。
后面我会将其整理成书稿出版,敬请期待。。。。。。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- CubeEngine v0.3B 更新,图形渲染引擎
- TensorFlow也可以做图形渲染了:当神经网络遇上计算机图形学
- Basemark推出Rocksolid图形渲染解决方案
- Ogre 1.12.3 发布,三维图形渲染引擎
- Rust 移动端跨平台复杂图形渲染项目开发系列总结(目录)
- Cocos2d-x 3.x 图形学渲染系列三十
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python高效开发实战——Django、Tornado、Flask、Twisted(第2版)
刘长龙 / 电子工业出版社 / 2019-1 / 99
也许你听说过全栈工程师,他们善于设计系统架构,精通数据库建模、通用网络协议、后端并发处理、前端界面设计,在学术研究或工程项目上能独当一面。通过对Python 3及相关Web框架的学习和实践,你就可以成为这样的全能型人才。 《Python高效开发实战——Django、Tornado、Flask、Twisted(第2版)》分为3篇:上篇是Python基础,带领初学者实践Python开发环境,掌握......一起来看看 《Python高效开发实战——Django、Tornado、Flask、Twisted(第2版)》 这本书的介绍吧!