public Texture2D Image2Texture(System.IO.FileInfo _fileName, ImageUtility.COMPONENT_FORMAT _componentFormat) { ImageUtility.ImagesMatrix images = null; if (_fileName.Extension.ToLower() == ".dds") { images = new ImageUtility.ImagesMatrix(); images.DDSLoadFile(_fileName); } else { ImageUtility.ImageFile image = new ImageUtility.ImageFile(_fileName); if (image.PixelFormat != ImageUtility.PIXEL_FORMAT.BGRA8) { ImageUtility.ImageFile badImage = image; image = new ImageUtility.ImageFile(); image.ConvertFrom(badImage, ImageUtility.PIXEL_FORMAT.BGRA8); badImage.Dispose(); } images = new ImageUtility.ImagesMatrix(new ImageUtility.ImageFile[1, 1] { { image } }); } return(new Texture2D(m_device, images, _componentFormat)); }
public void GetEquivalentRendererFormat(out ImageUtility.PIXEL_FORMAT _pixelFormat, out ImageUtility.COMPONENT_FORMAT _componentFormat) { switch (m_type) { case Type.UINT: _componentFormat = ImageUtility.COMPONENT_FORMAT.UINT; break; case Type.SINT: _componentFormat = ImageUtility.COMPONENT_FORMAT.SINT; break; case Type.UNORM: _componentFormat = ImageUtility.COMPONENT_FORMAT.UNORM; break; case Type.UNORM_sRGB: _componentFormat = ImageUtility.COMPONENT_FORMAT.UNORM_sRGB; break; case Type.SNORM: _componentFormat = ImageUtility.COMPONENT_FORMAT.SNORM; break; default: _componentFormat = ImageUtility.COMPONENT_FORMAT.AUTO; break; } switch (m_layout) { // 8-bits formats case Layout.LAYOUT_8: _pixelFormat = ImageUtility.PIXEL_FORMAT.R8; break; case Layout.LAYOUT_8_8: _pixelFormat = ImageUtility.PIXEL_FORMAT.RG8; break; case Layout.LAYOUT_8_8_8: _pixelFormat = ImageUtility.PIXEL_FORMAT.RGB8; break; case Layout.LAYOUT_8_8_8_8: _pixelFormat = ImageUtility.PIXEL_FORMAT.RGBA8; break; // 16-bit formats case Layout.LAYOUT_16: _pixelFormat = m_type != Type.FLOAT ? ImageUtility.PIXEL_FORMAT.R16 : ImageUtility.PIXEL_FORMAT.R16F; break; case Layout.LAYOUT_16_16: _pixelFormat = m_type != Type.FLOAT ? ImageUtility.PIXEL_FORMAT.RG16 : ImageUtility.PIXEL_FORMAT.RG16F; break; case Layout.LAYOUT_16_16_16: _pixelFormat = m_type != Type.FLOAT ? ImageUtility.PIXEL_FORMAT.RGB16 : ImageUtility.PIXEL_FORMAT.RGB16F; break; case Layout.LAYOUT_16_16_16_16: _pixelFormat = m_type != Type.FLOAT ? ImageUtility.PIXEL_FORMAT.RGBA16 : ImageUtility.PIXEL_FORMAT.RGBA16F; break; // 32-bit formats case Layout.LAYOUT_32: _pixelFormat = m_type != Type.FLOAT ? ImageUtility.PIXEL_FORMAT.R32 : ImageUtility.PIXEL_FORMAT.R32F; break; case Layout.LAYOUT_32_32: _pixelFormat = m_type != Type.FLOAT ? ImageUtility.PIXEL_FORMAT.RG32 : ImageUtility.PIXEL_FORMAT.RG32F; break; case Layout.LAYOUT_32_32_32: _pixelFormat = m_type != Type.FLOAT ? ImageUtility.PIXEL_FORMAT.RGB32 : ImageUtility.PIXEL_FORMAT.RGB32F; break; case Layout.LAYOUT_32_32_32_32: _pixelFormat = m_type != Type.FLOAT ? ImageUtility.PIXEL_FORMAT.RGBA32 : ImageUtility.PIXEL_FORMAT.RGBA32F; break; // Compressed formats case Layout.LAYOUT_BC4: _pixelFormat = ImageUtility.PIXEL_FORMAT.BC4; break; case Layout.LAYOUT_BC5: _pixelFormat = ImageUtility.PIXEL_FORMAT.BC5; break; case Layout.LAYOUT_BC6: _pixelFormat = ImageUtility.PIXEL_FORMAT.BC6H; break; case Layout.LAYOUT_BC7: _pixelFormat = ImageUtility.PIXEL_FORMAT.BC7; break; default: throw new Exception("Unsupported image format " + ToString()); } }