【发布时间】:2015-03-08 01:36:33
【问题描述】:
我正在尝试从 FreeType (SharpFont) 位图中获取 MonoGame 纹理。
如果我使用Bitmap.ToGdipBitmap,它可以正常工作,但这似乎非常低效和hacky。当我尝试自己转换它时,我得到一个System.ArgumentException(源数组不够长)。
Bitmap.ToGdipBitmap 的代码如下所示:
for (int i = 0; i < rec.rows; i++)
PInvokeHelper.Copy(Buffer, i * rec.pitch, locked.Scan0, i * locked.Stride, rec.width);
我的代码如下所示:
byte[] data = fontFace.Glyph.Bitmap.BufferData;
for (int y = 0; y < (int)glyphTexture.Height; y++)
{
byte[] row = new byte[(int)glyphTexture.Width];
Array.Copy(data, y * fontFace.Glyph.Bitmap.Pitch, row, 0, row.Length);
...
}
主要关注这两个:
i * rec.pitch
y * fontFace.Glyph.Bitmap.Pitch
难道他们都不会做基本相同的事情吗?
【问题讨论】:
-
“似乎非常低效和hacky”并不是一个客观的衡量标准。需要它的效率如何?您真的对执行操作需要多长时间有真正的问题吗?必须测量什么?不太清楚你在问什么。
-
更多的是我想知道为什么它会发生,即使我正在做与 Bitmap.ToGdipBitmap 相同的事情。
标签: c# arrays monogame freetype