Example #1
0
 IDepthStencilView GetDsv(ref DepthStencilViewDescription viewDesc)
 {
     CDepthStencilView view = null;
     foreach (var v in dsvs) { if (v.DescEquals(ref viewDesc)) { view = v; break; } }
     if (view == null)
     {
         view = new CDepthStencilView(this, GetSurfaceLevel(viewDesc.FirstArraySlice, viewDesc.MipSlice), ref viewDesc);
         dsvs.Add(view);
     }
     return view;
 }
 public static void CreateForTexture1D(int formatID, DepthStencilViewFlags flags, int mipSlice, out DepthStencilViewDescription desc)
 {
     desc = new DepthStencilViewDescription
     {
         Dimension = DepthStencilViewDimension.Texture1D,
         FormatID = formatID,
         Flags = flags,
         MipSlice = mipSlice
     };
 }
 public static void CreateForTexture2DMultisampledArray(int formatID, DepthStencilViewFlags flags, int firstArraySlice, int arraySize, out DepthStencilViewDescription desc)
 {
     desc = new DepthStencilViewDescription
     {
         Dimension = DepthStencilViewDimension.Texture2DMultisampledArray,
         FormatID = formatID,
         Flags = flags,
         FirstArraySlice = firstArraySlice,
         ArraySize = arraySize
     };
 }
 public static bool Equals(ref DepthStencilViewDescription desc1, ref DepthStencilViewDescription desc2)
 {
     switch (desc1.Dimension)
     {
         case DepthStencilViewDimension.Unknown:
             return desc2.Dimension == DepthStencilViewDimension.Unknown;
         case DepthStencilViewDimension.Texture1D:
             return desc2.Dimension == DepthStencilViewDimension.Texture1D &&
                 desc1.FormatID == desc2.FormatID &&
                 desc1.Flags == desc2.Flags &&
                 desc1.MipSlice == desc2.MipSlice;
         case DepthStencilViewDimension.Texture1DArray:
             return desc2.Dimension == DepthStencilViewDimension.Texture1DArray &&
                 desc1.FormatID == desc2.FormatID &&
                 desc1.Flags == desc2.Flags &&
                 desc1.MipSlice == desc2.MipSlice &&
                 desc1.FirstArraySlice == desc2.FirstArraySlice &&
                 desc1.ArraySize == desc2.ArraySize;
         case DepthStencilViewDimension.Texture2D:
             return desc2.Dimension == DepthStencilViewDimension.Texture2D &&
                 desc1.FormatID == desc2.FormatID &&
                 desc1.Flags == desc2.Flags &&
                 desc1.MipSlice == desc2.MipSlice;
         case DepthStencilViewDimension.Texture2DArray:
             return desc2.Dimension == DepthStencilViewDimension.Texture2DArray &&
                 desc1.FormatID == desc2.FormatID &&
                 desc1.Flags == desc2.Flags &&
                 desc1.MipSlice == desc2.MipSlice &&
                 desc1.FirstArraySlice == desc2.FirstArraySlice &&
                 desc1.ArraySize == desc2.ArraySize;
         case DepthStencilViewDimension.Texture2DMultisampled:
             return desc2.Dimension == DepthStencilViewDimension.Texture2DMultisampled &&
                 desc1.FormatID == desc2.FormatID &&
                 desc1.Flags == desc2.Flags;
         case DepthStencilViewDimension.Texture2DMultisampledArray:
             return desc2.Dimension == DepthStencilViewDimension.Texture2DMultisampledArray &&
                 desc1.FormatID == desc2.FormatID &&
                 desc1.Flags == desc2.Flags &&
                 desc1.FirstArraySlice == desc2.FirstArraySlice &&
                 desc1.ArraySize == desc2.ArraySize;
         default: throw new ShouldNeverHappenException();
     }
 }
 public static void CreateForTexture2DMultisampled(int formatID, DepthStencilViewFlags flags, out DepthStencilViewDescription desc)
 {
     desc = new DepthStencilViewDescription
     {
         Dimension = DepthStencilViewDimension.Texture2DMultisampled,
         FormatID = formatID,
         Flags = flags,
     };
 }