FFXIVAPP.Hooker.Engine.DXFont.BuildFontSheetTexture C# (CSharp) Method

BuildFontSheetTexture() private method

private BuildFontSheetTexture ( Bitmap fontSheetBitmap ) : bool
fontSheetBitmap System.Drawing.Bitmap
return bool
        private bool BuildFontSheetTexture(Bitmap fontSheetBitmap)
        {
            BitmapData bmData;

            bmData = fontSheetBitmap.LockBits(new System.Drawing.Rectangle(0, 0, _texWidth, _texHeight), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
            var texDesc = new Texture2DDescription();
            texDesc.Width = _texWidth;
            texDesc.Height = _texHeight;
            texDesc.MipLevels = 1;
            texDesc.ArraySize = 1;
            texDesc.Format = Format.B8G8R8A8_UNorm;
            texDesc.SampleDescription.Count = 1;
            texDesc.SampleDescription.Quality = 0;
            texDesc.Usage = ResourceUsage.Immutable;
            texDesc.BindFlags = BindFlags.ShaderResource;
            texDesc.CpuAccessFlags = CpuAccessFlags.None;
            texDesc.OptionFlags = ResourceOptionFlags.None;

            DataBox data;
            data.DataPointer = bmData.Scan0;
            data.RowPitch = _texWidth * 4;
            data.SlicePitch = 0;

            _fontSheetTex = new Texture2D(_device, texDesc, new[]
            {
                data
            });
            if (_fontSheetTex == null)
            {
                return false;
            }

            var srvDesc = new ShaderResourceViewDescription();
            srvDesc.Format = Format.B8G8R8A8_UNorm;
            srvDesc.Dimension = ShaderResourceViewDimension.Texture2D;
            srvDesc.Texture2D.MipLevels = 1;
            srvDesc.Texture2D.MostDetailedMip = 0;

            _fontSheetSRV = new ShaderResourceView(_device, _fontSheetTex, srvDesc);
            if (_fontSheetSRV == null)
            {
                return false;
            }

            fontSheetBitmap.UnlockBits(bmData);

            return true;
        }