示例#1
0
        /// <summary>
        /// Gets the postrocess effect with the given key.
        /// </summary>
        /// <param name="namedOrGenericKey">The key of the effect.</param>
        /// <param name="resourceDictionary">The resource dictionary where to load the effect.</param>
        internal PostprocessEffectResource GetPostprocessEffect(NamedOrGenericKey namedOrGenericKey, ResourceDictionary resourceDictionary)
        {
            m_postprocessEffectKey = namedOrGenericKey;

            // Handle empty key
            if (namedOrGenericKey.IsEmpty)
            {
                m_postprocessEffect = null;
                return(null);
            }

            // Check for current effect object
            if (m_postprocessEffect != null)
            {
                // Good case, return current one
                if (m_postprocessEffect.Key == namedOrGenericKey)
                {
                    return(m_postprocessEffect);
                }

                // Bad case, effect has changed
                m_postprocessEffect = null;
            }

            m_postprocessEffect    = resourceDictionary.GetResourceAndEnsureLoaded <PostprocessEffectResource>(namedOrGenericKey);
            m_postprocessEffectKey = namedOrGenericKey;
            return(m_postprocessEffect);
        }
示例#2
0
 /// <summary>
 /// Unloads the resource.
 /// </summary>
 protected override void UnloadResourceInternal(EngineDevice device, ResourceDictionary resources)
 {
     m_cbPerView         = null;
     m_postprocessEffect = null;
 }