Ejemplo n.º 1
0
 public void ReCreateCBuffer(CRenderContext rc, CGfxEffect effect, bool FlushVars)
 {
     if (effect.CacheData.PerInstanceId != UInt32.MaxValue)
     {
         bool recreateCB = false;
         if (mCBuffer != null)
         {
             var desc = new CConstantBufferDesc();
             effect.ShaderProgram.GetCBufferDesc(effect.CacheData.PerInstanceId, ref desc);
             if (mCBuffer.Size != desc.Size)
             {
                 recreateCB = true;
             }
             else
             {
                 recreateCB = !mCBuffer.IsSameVars(effect.ShaderProgram, effect.CacheData.PerInstanceId);
             }
         }
         else
         {
             recreateCB = true;
         }
         if (recreateCB)
         {
             mCBuffer = rc.CreateConstantBuffer(effect.ShaderProgram, effect.CacheData.PerInstanceId);
             MtlInst.SetCBufferVars(CBuffer);
         }
         else if (FlushVars)
         {
             MtlInst.SetCBufferVars(CBuffer);
         }
     }
 }
Ejemplo n.º 2
0
        private void UpdateMaterialCBuffer(CRenderContext rc, CGfxEffect effect)
        {
            var cbIndex = effect.CacheData.PerInstanceId;// effect.ShaderProgram.FindCBuffer("cbPerInstance");

            if ((int)cbIndex >= 0)
            {
                PassData2ConstBufferPerTick(null);

                MtlInst.SetCBufferVars(CBuffer);
            }
        }