/// <summary> /// Clones the pass collection using the new effect technique, /// used for when the effect implementation is cloned. /// </summary> /// <param name="tech">The D3D10 effect technique.</param> /// <returns>Cloned collection</returns> internal D3D10EffectPassCollection Clone(D3D.EffectTechnique tech) { D3D10EffectPassCollection clone = new D3D10EffectPassCollection(); for (int i = 0; i < Count; i++) { clone.Add(_passes[i].Clone(tech.GetPassByIndex(i))); } return(clone); }
/// <summary> /// Creates a new instance of <see cref="D3D10EffectTechnique"/>. /// </summary> /// <param name="parent">The implementation parent.</param> /// <param name="effect">The D3D10 effect.</param> /// <param name="tech">The D3D10 technique.</param> internal D3D10EffectTechnique(D3D10EffectImplementation parent, D3D.Effect effect, D3D.EffectTechnique tech) { _tech = tech; _parent = parent; D3D.EffectTechniqueDescription desc = _tech.Description; _name = desc.Name; //Fetch annotations int annoCount = desc.AnnotationCount; _annotations = new D3D10EffectAnnotationCollection(); for (int i = 0; i < annoCount; i++) { D3D.EffectVariable anno = _tech.GetAnnotationByIndex(i); D3D.EffectVariableDescription annoDesc = anno.Description; D3D.EffectVariable annoVar = anno.AsString(); if (annoVar != null) { _annotations.Add(new D3D10EffectAnnotation(annoVar, annoDesc.Name, annoDesc.Semantic, EffectParameterClass.Object, EffectParameterType.String)); } annoVar = anno.AsScalar(); if (annoVar != null) { //Need to find a way to get the param type... _annotations.Add(new D3D10EffectAnnotation(annoVar, annoDesc.Name, annoDesc.Semantic, EffectParameterClass.Scalar, EffectParameterType.Unknown)); } annoVar = anno.AsMatrix(); if (annoVar != null) { _annotations.Add(new D3D10EffectAnnotation(annoVar, annoDesc.Name, annoDesc.Semantic, EffectParameterClass.Matrix, EffectParameterType.Single)); } } _passes = new D3D10EffectPassCollection(); for (int i = 0; i < desc.PassCount; i++) { _passes.Add(new D3D10EffectPass(parent, effect, tech.GetPassByIndex(i))); } }