public void SetRenderState(IEffectTechnique technique, int passIndex, RenderState rs) { RenderStateRecord[] records; if (!_map.TryGetValue(technique.Name, out records)) { records = new RenderStateRecord[technique.Passes.Count]; _map.Add(technique.Name, records); } if (passIndex >= 0 && passIndex < records.Length) { RenderStateRecord record = records[passIndex]; switch (rs.StateType) { case RenderStateType.BlendState: record.BlendState = rs as BlendState; break; case RenderStateType.DepthStencilState: record.DepthStencilState = rs as DepthStencilState; break; case RenderStateType.RasterizerState: record.RasterizerState = rs as RasterizerState; break; } records[passIndex] = record; } else { throw new ArgumentOutOfRangeException("Pass index out of range"); } }
public void SetActiveRecords(IEffectTechnique technique) { _activeTechniqueName = technique.Name; _map.TryGetValue(_activeTechniqueName, out _activeRecords); if (_activeRecords == null) { _activeRecords = new RenderStateRecord[technique.Passes.Count]; _map.Add(technique.Name, _activeRecords); } }
/// <summary> /// Gets the technique specified by its index. /// </summary> /// <returns>The technique, if it exists</returns> public IEffectTechnique this[String name] { get { for (int i = 0; i < _techniques.Count; i++) { IEffectTechnique tech = _techniques[i]; if (tech.Name.Equals(name)) { return(tech); } } return(null); } }
public void SetActiveTechnique(String techniqueName) { if (IsValid) { IEffectTechnique technique = _effect.Techniques[techniqueName]; if (technique != null) { _effect.CurrentTechnique = technique; _currentTechnique = technique; _renderStateMap.SetActiveRecords(technique); } } }
public void SetRenderState(RenderState rs, String techniqueName, int passIndex) { if (IsValid) { IEffectTechnique technique = _effect.Techniques[techniqueName]; if (technique != null) { _renderStateMap.SetRenderState(technique, passIndex, rs); } } else { throw new ArgumentNullException("Material does not have a valid effect loaded, cannot set RenderState. Call LoadEffect() first"); } }
public RenderState GetRenderState(RenderStateType type, int techniqueIndex, int passIndex) { if (IsValid) { IEffectTechnique technique = _effect.Techniques[techniqueIndex]; if (technique != null) { return(_renderStateMap.GetRenderState(type, technique.Name, passIndex)); } else { return(null); } } else { throw new ArgumentNullException("Material does not have a valid effect loaded, cannot set RenderState. Call LoadEffect() first"); } }
public void SetRenderState(RenderState rs, String techniqueName, String passName) { if (IsValid) { IEffectTechnique technique = _effect.Techniques[techniqueName]; if (technique != null) { for (int i = 0; i < technique.Passes.Count; i++) { IEffectPass pass = technique.Passes[i]; if (pass.Name.Equals(passName)) { _renderStateMap.SetRenderState(technique, i, rs); return; } } } } else { throw new ArgumentNullException("Material does not have a valid effect loaded, cannot set RenderState. Call LoadEffect() first"); } }
public RenderState GetRenderState(RenderStateType type, int techniqueIndex, String passName) { if (IsValid) { IEffectTechnique technique = _effect.Techniques[techniqueIndex]; if (technique != null) { for (int i = 0; i < technique.Passes.Count; i++) { IEffectPass pass = technique.Passes[i]; if (pass.Name.Equals(passName)) { return(_renderStateMap.GetRenderState(type, technique.Name, i)); } } } } else { throw new ArgumentNullException("Material does not have a valid effect loaded, cannot set RenderState. Call LoadEffect() first"); } return(null); }