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

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Cocos2d-x 3.x 圖形學(xué)渲染系列總結(jié)

2019-11-09 18:54:05
字體:
供稿:網(wǎng)友

筆者介紹:姜雪偉,IT公司技術(shù)合伙人,IT高級(jí)講師,CSDN社區(qū)專家,特邀編輯,暢銷書作者,國(guó)家專利發(fā)明人;已出版書籍:《手把手教你架構(gòu)3D游戲引擎》電子工業(yè)出版社和《Unity3D實(shí)戰(zhàn)核心技術(shù)詳解》電子工業(yè)出版社等。

CSDN視頻網(wǎng)址:http://edu.csdn.net/lecturer/144

在前面讀者已經(jīng)學(xué)習(xí)了對(duì)模型的加密操作,在了解了3D加密模型的編寫后,下面將代碼編譯出可執(zhí)行文件,編譯截圖如下:

編譯最終生成可執(zhí)行文件目錄如下:

接下來開始修改加密的方式,開發(fā)者可以自己定義模型的加密方式和模型的擴(kuò)展名字,首先找到C3BFile.cpp文件,在上節(jié)中已經(jīng)實(shí)現(xiàn)了。在這里只把修改的重點(diǎn)函數(shù)給讀者展示一下,比如把擴(kuò)展名字改成x3b,首先修改的類文件的save保存函數(shù)如下所示:

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,另一個(gè)修改擴(kuò)展函數(shù)中定義的擴(kuò)展文件名字的代碼如下所示:

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, "");		}	}轉(zhuǎn)換保存后的模型文件格式是x3b,這樣轉(zhuǎn)換保存后的模型文件格式是x3b,接下來修改加密模塊,打開C3BFile.cpp文件,如下所示:

bool C3BFile::saveBinary(const std::string& filepath)	{		_file = fopen(filepath.c_str(), "w+b");		// 文件標(biāo)識(shí)		//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;	}

已經(jīng)將以前的代碼注釋掉了,修改成自定義的加密字符串,代碼行如下所示:

unsigned char identifier[] = {8,52,67,19};通過工具fbx-conv生成的x3b模型如下:

這樣我們自己也可以對(duì)模型進(jìn)行加密操作。

總結(jié):

           針對(duì)模型的加密已經(jīng)完成,在這里也是告訴讀者,針對(duì)3D模型是如何實(shí)現(xiàn)加密的,也是給讀者提供了一種思路,程序員自己可以很容易的完成加密處理。模型加密的處理方式也是很多的,比如在模型的中間增加某個(gè)字段或者在模型插件中加入多個(gè)矩陣換算等等。

后面我會(huì)將其整理成書稿出版,敬請(qǐng)期待。。。。。。


上一篇:推薦TV內(nèi)容

下一篇:LocalActivityManager

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 正镶白旗| 怀化市| 敦煌市| 平远县| 青浦区| 五台县| 札达县| 元朗区| 于都县| 闵行区| 洪泽县| 方山县| 内江市| 开封市| 鸡东县| 嘉黎县| 缙云县| 新源县| 文昌市| 北票市| 昔阳县| 芜湖市| 临武县| 鲁甸县| 合川市| 科技| 北京市| 宣化县| 城市| 乐业县| 西华县| 朝阳区| 治县。| 凤城市| 玛多县| 房产| 会宁县| 武乡县| 扎赉特旗| 房山区| 岗巴县|