/// <summary>
///
/// </summary>
public MaterialManager GetMaterialManager(string shaderName, string[] keywords)
{
if (_root != this)
{
return(_root.GetMaterialManager(shaderName, keywords));
}
if (_materialManagers == null)
{
_materialManagers = new Dictionary <string, MaterialManager>();
}
string key = shaderName;
if (keywords != null)
{
//对于带指定关键字的,目前的设计是不参加共享材质了,因为逻辑会变得更复杂
key = shaderName + "_" + _gCounter++;
}
MaterialManager mm;
if (!_materialManagers.TryGetValue(key, out mm))
{
mm = new MaterialManager(this, ShaderConfig.GetShader(shaderName), keywords);
mm._managerKey = key;
_materialManagers.Add(key, mm);
}
return(mm);
}