当前位置: 首页>>代码示例>>C++>>正文


C++ MD5Hash::Final方法代码示例

本文整理汇总了C++中MD5Hash::Final方法的典型用法代码示例。如果您正苦于以下问题:C++ MD5Hash::Final方法的具体用法?C++ MD5Hash::Final怎么用?C++ MD5Hash::Final使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在MD5Hash的用法示例。


在下文中一共展示了MD5Hash::Final方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: Load

bool DevEffect::Load(const char *path,DevEffect::DefGenerator *dg)
{
	// clear effect
	ClearEffect();
	file_time = GetFileTime(path);
	p_path = string(path).c_str();

	// load file
	vector<char> data;
	if(!ScrambleLoad(path,data))
		return false;

	// compute partial hash
	MD5Hash md5;
	md5.Update((byte*)&data[0],(int)data.size());

	// build skip list
	string skip_list;
	BuildSkipList(&data[0],skip_list);

	// build defines
	vector<string> defs;
	if(dg)	dg(defs);
	else	defs.push_back(":");

	// create pool
	if(defs.size()>=2)
	{
		if(FAILED(D3DXCreateEffectPool(&pool)))
		{
			return false;
		}
	}

	// compile
	for(int i=0;i<(int)defs.size();i++)
	{
		vector<D3DXMACRO> macros;
		vector<byte> bin;
		MD5Hash hash = md5;
		byte bhash[16];

		// build final hash
		defs[i].push_back(0);
		hash.Update((byte*)&defs[i][0],(int)defs.size());
		hash.Final(bhash);

		// get macros
		ShatterDefsList(&defs[i][0],macros);

		// build binary path
		string bpath = FilePathGetPart((string("shaders/")+path).c_str(),true,true,false);
		if(defs[i].c_str()[0])
		{
			bpath += "-";
			bpath += defs[i].c_str();
		}
		bpath += ".fxx";

		// precompile effect
		if(!GetPrecompiledBinary(data,defs[i].c_str(),path,bpath.c_str(),macros,bhash,bin))
			return false;

		if(!CompileVersion(defs[i].c_str(),path,bin,macros,skip_list.c_str()))
			return false;
	}

	if(fx_list.size()<=0)
		return false;

	fx = fx_list[0];

	// load textures
	D3DXHANDLE h, ha;
	const char *str;
	int id = 0;
	while( (h = fx->GetParameter(NULL,id)) )
	{
		ha = fx->GetAnnotationByName(h,"Load");
		if(ha)
			if(SUCCEEDED(fx->GetString(ha,&str)))
			{
				DevTexture *t = new DevTexture();
				t->Load(str);
				fx->SetTexture(h,t->GetTexture());
				textures.push_back(t);
			}
		id++;
	}

	return true;
}
开发者ID:Krzysiek-K,项目名称:igk2015compo,代码行数:92,代码来源:d_effect.cpp


注:本文中的MD5Hash::Final方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。