for(auto&& desc : description)
unique_ptr<ShaderTechnique> technique(new ShaderTechnique( *device, desc, options ));
// Always non-null returns from new.
if (technique->PassCount() > 0 ) {
techniqueindices.Add( technique->Name(), techniques.size() );
// Release it when `techniques` holder will become owner
techniques.push_back(std::move(technique));
for ( ulword i = 0; i < mytech->PassCount(); ++i ) {
Parameters.Add( mytech->PassAt( i )->Parameters );
}
}
}
Zm9yKGF1dG8mJiBkZXNjIDogZGVzY3JpcHRpb24pCgl1bmlxdWVfcHRyPFNoYWRlclRlY2huaXF1ZT4gdGVjaG5pcXVlKG5ldyBTaGFkZXJUZWNobmlxdWUoICpkZXZpY2UsIGRlc2MsIG9wdGlvbnMgKSk7CiAgICAvLyBBbHdheXMgbm9uLW51bGwgcmV0dXJucyBmcm9tIG5ldy4KCWlmICh0ZWNobmlxdWUtPlBhc3NDb3VudCgpID4gMCApIHsKCQl0ZWNobmlxdWVpbmRpY2VzLkFkZCggdGVjaG5pcXVlLT5OYW1lKCksIHRlY2huaXF1ZXMuc2l6ZSgpICk7CgkJLy8gUmVsZWFzZSBpdCB3aGVuIGB0ZWNobmlxdWVzYCBob2xkZXIgd2lsbCBiZWNvbWUgb3duZXIKCQl0ZWNobmlxdWVzLnB1c2hfYmFjayhzdGQ6Om1vdmUodGVjaG5pcXVlKSk7CgkJZm9yICggdWx3b3JkIGkgPSAwOyBpIDwgbXl0ZWNoLT5QYXNzQ291bnQoKTsgKytpICkgewoJCQlQYXJhbWV0ZXJzLkFkZCggbXl0ZWNoLT5QYXNzQXQoIGkgKS0+UGFyYW1ldGVycyApOwoJCX0KCX0KfQ==