Пример #1
0
        internal void GenerateDepthStencilFormat()
        {
            Format[] validFormats =
            {
                Format.D32SFloatS8UInt,
                Format.D32SFloat,
                Format.D24UNormS8UInt,
                Format.D16UNormS8UInt,
                Format.D16UNorm
            };

            Format?potentialFormat = validFormats.FirstOrDefault(
                validFormat =>
            {
                FormatProperties formatProps = PhysicalDevice.GetFormatProperties(validFormat);
                return((formatProps.OptimalTilingFeatures & FormatFeatures.DepthStencilAttachment) > 0);
            });

            if (!potentialFormat.HasValue)
            {
                throw new InvalidOperationException("Required depth stencil format not supported.");
            }

            DepthStencilFormat = potentialFormat.Value;
        }
        internal bool IsFormatSupported(Format format, ImageTiling tiling, FormatFeatures features)
        {
            var properties = physicalDevice.GetFormatProperties(format);

            switch (tiling)
            {
            case ImageTiling.Linear:
                return((properties.LinearTilingFeatures & features) == features);

            case ImageTiling.Optimal:
                return((properties.OptimalTilingFeatures & features) == features);
            }
            return(false);
        }
Пример #3
0
 public void GetFormatProperties()
 {
     PhysicalDevice.GetFormatProperties(Format.B8G8R8A8UNorm);
 }