本文整理汇总了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;
}