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, }; }