Использую пиксельный buffer который имеет 3 байта на каждый пиксель (rgb) и организован построчно.
game.viewWidth - ширина экрана в пикселях.
buffer - это выходное изображение которое отрисовывается на экране.
Инициализирую freetype библиотеки и пытаюсь отрисовать маленькую букву 'a'.
Но вместо 'a' получаю какие-то линии наискосок:
Убил 6 часов, ничего не понял. Что я делаю не так? Все туториалы говорят такой код должен работать.
FT_Library ft;
FT_Face face;
if (FT_Init_FreeType(&ft))
std::cout << "ERROR::FREETYPE: Could not init FreeType Library" << std::endl;
if (FT_New_Face(ft, "fonts/arial.ttf", 0, &face))
std::cout << "ERROR::FREETYPE: Failed to load font" << std::endl;
FT_Set_Pixel_Sizes(face, 0, 72);
FT_Load_Char(face, 'a', FT_LOAD_RENDER))
std::cout << "ERROR::FREETYTPE: Failed to load Glyph" << std::endl;
FT_GlyphSlot ch = face->glyph;
for (int rows = 0; rows < ch->bitmap.rows; rows++)
{
for (int yi = 0; yi < ch->bitmap.width; yi++)
{
buffer[rows*game.viewWidth * 3 + yi * 3] = ch->bitmap..buffer[(rows * ch->bitmap.pitch + yi) ];
buffer[rows*game.viewWidth * 3 + yi * 3 + 1] = ch->bitmap.buffer[(rows * ch->bitmap.pitch + yi)];
buffer[rows*game.viewWidth * 3 + yi * 3 + 2] = ch->bitmap.buffer[(rows * ch->bitmap.pitch + yi)];
}
}