Cocos2d-x 3.x 图形学渲染系列总结

栏目: IOS · 发布时间: 6年前

内容简介:Cocos2d-x 3.x 图形学渲染系列总结

笔者介绍: 姜雪伟 IT 公司技术合伙人, IT 高级讲师, CSDN 社区专家,特邀编辑,畅销书作者,国家专利发明人 ; 已出版书籍:《手把手教你 架构 3D 游戏引擎》电子工业出版社 和《 Unity3D 实战核心技术详解》电子工业出版社等。

CSDN视频网址: http://edu.csdn.net/lecturer/144

在前面读者已经学习了对模型的加密操作,在了解了3D加密模型的编写后,下面将代码编译出可执行文件,编译截图如下:

Cocos2d-x 3.x 图形学渲染系列总结

编译最终生成可执行文件目录如下:

Cocos2d-x 3.x 图形学渲染系列总结

接下来开始修改加密的方式,开发者可以自己定义模型的加密方式和模型的扩展名字,首先找到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模型如下:

Cocos2d-x 3.x 图形学渲染系列总结

这样我们自己也可以对模型进行加密操作。

总结:

针对模型的加密已经完成,在这里也是告诉读者,针对3D模型是如何实现加密的,也是给读者提供了一种思路,程序员自己可以很容易的完成加密处理。模型加密的处理方式也是很多的,比如在模型的中间增加某个字段或者在模型插件中加入多个矩阵换算等等。

后面我会将其整理成书稿出版,敬请期待。。。。。。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

从零开始学微信公众号运营推广

从零开始学微信公众号运营推广

叶龙 / 清华大学出版社 / 2017-6-1 / 39.80

本书是丛书的第2本,具体内容如下。 第1章 运营者入门——选择、注册和认证 第2章 变现和赚钱——如何从0到100万 第3章 决定打开率——标题的取名和优化 第4章 决定美观度——图片的选取和优化 第5章 决定停留率——正文的编辑和优化 第6章 决定欣赏率——版式的编辑和优化 第7章 数据的分析——用户内容的精准营销 书中从微信运营入门开始,以商业变......一起来看看 《从零开始学微信公众号运营推广》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换