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