国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Cocos2d-x 3.x 圖形學渲染系列總結

2019-11-09 18:03:06
字體:
來源:轉載
供稿:網友

筆者介紹:姜雪偉,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模型是如何實現加密的,也是給讀者提供了一種思路,程序員自己可以很容易的完成加密處理。模型加密的處理方式也是很多的,比如在模型的中間增加某個字段或者在模型插件中加入多個矩陣換算等等。

后面我會將其整理成書稿出版,敬請期待。。。。。。


上一篇:推薦TV內容

下一篇:LocalActivityManager

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乐业县| 逊克县| 常山县| 正镶白旗| 凭祥市| 高台县| 龙里县| 巴南区| 石柱| 油尖旺区| 宜川县| 吴川市| 楚雄市| 利津县| 保山市| 磴口县| 宁化县| 来宾市| 桃园县| 承德县| 界首市| 佳木斯市| 佛山市| 大丰市| 石河子市| 山丹县| 保德县| 闽侯县| 容城县| 日照市| 米脂县| 富裕县| 彭山县| 河池市| 民勤县| 克拉玛依市| 东山县| 宽城| 铅山县| 时尚| 色达县|