Я пытаюсь получить текстуру MonoGame из растрового изображения FreeType (SharpFont).Почему это происходит? (Ошибка SharpFont/Monogame)
Если я использую Bitmap.ToGdipBitmap
, он отлично работает, но это кажется очень неэффективным и взломанным. Когда я пытаюсь преобразовать его сам, я получаю 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
Не будет ли они оба делают в основном то же самое?
«кажется очень неэффективным и хакерским» на самом деле не является объективной мерой. Насколько эффективно это нужно делать? У вас действительно есть реальная проблема с тем, сколько времени требуется для выполнения операции? Нужно что-то измерять? Не совсем понятно, что вы просите. – craftworkgames
Это больше, что мне интересно, почему это происходит, хотя я делаю то же самое, что и Bitmap.ToGdipBitmap. –