Example #1
0
 IShaderResourceView GetSrv(ref ShaderResourceViewDescription viewDesc)
 {
     CShaderResourceView view = null;
     foreach (var v in srvs) { if (v.DescEquals(ref viewDesc)) { view = v; break; } }
     if (view == null)
     {
         view = new CShaderResourceView(this, GetTexture(), ref viewDesc);
         srvs.Add(view);
     }
     return view;
 }
 public static bool Equals(ref ShaderResourceViewDescription desc1, ref ShaderResourceViewDescription desc2)
 {
     switch (desc1.Dimension)
     {
         case ShaderResourceViewDimension.Unknown:
             return desc2.Dimension == ShaderResourceViewDimension.Unknown;
         case ShaderResourceViewDimension.Buffer:
             return desc2.Dimension == ShaderResourceViewDimension.Buffer &&
                 desc1.FormatID == desc2.FormatID &&
                 desc1.FirstElement == desc2.FirstElement &&
                 desc1.ElementCount == desc2.ElementCount;
         case ShaderResourceViewDimension.Texture1D:
             return desc2.Dimension == ShaderResourceViewDimension.Texture1D &&
                 desc1.FormatID == desc2.FormatID &&
                 desc1.MostDetailedMip == desc2.MostDetailedMip &&
                 desc1.MipLevels == desc2.MipLevels;
         case ShaderResourceViewDimension.Texture1DArray:
             return desc2.Dimension == ShaderResourceViewDimension.Texture1DArray &&
                 desc1.FormatID == desc2.FormatID &&
                 desc1.MostDetailedMip == desc2.MostDetailedMip &&
                 desc1.MipLevels == desc2.MipLevels &&
                 desc1.FirstArraySlice == desc2.FirstArraySlice &&
                 desc1.ArraySize == desc2.ArraySize;
         case ShaderResourceViewDimension.Texture2D:
             return desc2.Dimension == ShaderResourceViewDimension.Texture2D &&
                 desc1.FormatID == desc2.FormatID &&
                 desc1.MostDetailedMip == desc2.MostDetailedMip &&
                 desc1.MipLevels == desc2.MipLevels;
         case ShaderResourceViewDimension.Texture2DArray:
             return desc2.Dimension == ShaderResourceViewDimension.Texture2DArray &&
                 desc1.FormatID == desc2.FormatID &&
                 desc1.MostDetailedMip == desc2.MostDetailedMip &&
                 desc1.MipLevels == desc2.MipLevels &&
                 desc1.FirstArraySlice == desc2.FirstArraySlice &&
                 desc1.ArraySize == desc2.ArraySize;
         case ShaderResourceViewDimension.Texture2DMultisampled:
             return desc2.Dimension == ShaderResourceViewDimension.Texture2DMultisampled &&
                 desc1.FormatID == desc2.FormatID;
         case ShaderResourceViewDimension.Texture2DMultisampledArray:
             return desc2.Dimension == ShaderResourceViewDimension.Texture2DMultisampledArray &&
                 desc1.FormatID == desc2.FormatID &&
                 desc1.FirstArraySlice == desc2.FirstArraySlice &&
                 desc1.ArraySize == desc2.ArraySize;
         case ShaderResourceViewDimension.Texture3D:
             return desc2.Dimension == ShaderResourceViewDimension.Texture3D &&
                 desc1.FormatID == desc2.FormatID &&
                 desc1.MostDetailedMip == desc2.MostDetailedMip &&
                 desc1.MipLevels == desc2.MipLevels;
         case ShaderResourceViewDimension.TextureCube:
             return desc2.Dimension == ShaderResourceViewDimension.TextureCube &&
                 desc1.FormatID == desc2.FormatID &&
                 desc1.MostDetailedMip == desc2.MostDetailedMip &&
                 desc1.MipLevels == desc2.MipLevels;
         case ShaderResourceViewDimension.TextureCubeArray:
             return desc2.Dimension == ShaderResourceViewDimension.TextureCubeArray &&
                 desc1.FormatID == desc2.FormatID &&
                 desc1.MostDetailedMip == desc2.MostDetailedMip &&
                 desc1.MipLevels == desc2.MipLevels &&
                 desc1.FirstArraySlice == desc2.FirstArraySlice &&
                 desc1.ArraySize == desc2.ArraySize;
         default: throw new ShouldNeverHappenException();
     }
 }
 public static void CreateForBuffer(int formatID, int firstElement, int elementCount, out ShaderResourceViewDescription desc)
 {
     desc = new ShaderResourceViewDescription
     {
         Dimension = ShaderResourceViewDimension.Buffer,
         FormatID = formatID,
         FirstElement = firstElement,
         ElementCount = elementCount
     };
 }
 public static void CreateForTextureCubeArray(int formatID, int mostDetailedMip, int mipLevels, int firstArraySlice, int arraySize, out ShaderResourceViewDescription desc)
 {
     desc = new ShaderResourceViewDescription
     {
         Dimension = ShaderResourceViewDimension.TextureCubeArray,
         FormatID = formatID,
         MostDetailedMip = mostDetailedMip,
         MipLevels = mipLevels,
         FirstArraySlice = firstArraySlice,
         ArraySize = arraySize
     };
 }
 public static void CreateForTextureCube(int formatID, int mostDetailedMip, int mipLevels, out ShaderResourceViewDescription desc)
 {
     desc = new ShaderResourceViewDescription
     {
         Dimension = ShaderResourceViewDimension.TextureCube,
         FormatID = formatID,
         MostDetailedMip = mostDetailedMip,
         MipLevels = mipLevels
     };
 }
 public static void CreateForTexture2DMultisampledArray(int formatID, int firstArraySlice, int arraySize, out ShaderResourceViewDescription desc)
 {
     desc = new ShaderResourceViewDescription
     {
         Dimension = ShaderResourceViewDimension.Texture2DMultisampledArray,
         FormatID = formatID,
         FirstArraySlice = firstArraySlice,
         ArraySize = arraySize
     };
 }
 public static void CreateForTexture2DMultisampled(int formatID, out ShaderResourceViewDescription desc)
 {
     desc = new ShaderResourceViewDescription
     {
         Dimension = ShaderResourceViewDimension.Texture2DMultisampled,
         FormatID = formatID
     };
 }
 public static void CreateForBufferEx(int formatID, int firstElement, int elementCount, ShaderResourceViewExtendedBufferFlags flags, out ShaderResourceViewDescription desc)
 {
     desc = new ShaderResourceViewDescription
     {
         Dimension = ShaderResourceViewDimension.ExtendedBuffer,
         FirstElement = firstElement,
         ElementCount = elementCount,
         ExtendedBufferFlags = flags
     };
 }