public void Dispose()
 {
     ObjectCB.Dispose();
     MaterialCB.Dispose();
     PassCB.Dispose();
     CmdListAlloc.Dispose();
 }
예제 #2
0
 internal void Initialize()
 {
     MaterialCB.Attach(Technique);
     NonMaterialCB.Attach(Technique);
     OnInitialPropertyBindings();
     foreach (var v in propertyBindings.Values)
     {
         v.Invoke();
     }
 }
예제 #3
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="disposeManagedResources"></param>
 protected override void OnDispose(bool disposeManagedResources)
 {
     if (disposeManagedResources)
     {
         UpdateNeeded = null;
         if (material != null)
         {
             material.PropertyChanged -= MaterialCore_PropertyChanged;
         }
         MaterialCB.Detach();
         NonMaterialCB.Detach();
         propertyBindings.Clear();
     }
     base.OnDispose(disposeManagedResources);
 }
예제 #4
0
 /// <summary>
 /// Updates the material structure. And upload data to constant buffer
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="context">The context.</param>
 /// <param name="model">The model.</param>
 /// <param name="structSize"></param>
 public bool UpdateMaterialStruct <T>(DeviceContextProxy context, ref T model, int structSize) where T : struct
 {
     if (NeedUpdate)
     {
         lock (updateLock)
         {
             if (NeedUpdate)
             {
                 UpdateInternalVariables(context);
                 NeedUpdate = false;
             }
         }
     }
     return(MaterialCB.Upload(context, ref model, structSize));
 }
예제 #5
0
 public void WriteValue <T>(ref T value, int offset) where T : struct
 {
     MaterialCB.WriteValue(value, offset);
 }
예제 #6
0
 public void WriteValue <T>(string name, T value) where T : struct
 {
     MaterialCB.WriteValueByName(name, value);
 }