static_cast
Идентификатор символа. Для каждого шрифта у символа есть свой собственный номер.
char*text; FT_Face face;
http://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html
спасибо, кажется, понимаю!
Нашёл код, не могли бы вы прояснить кое-что:
static const char START_CHAR = ' '; static const char END_CHAR = '~'; FT_Init_FreeType(&lib); FT_New_Face( lib, "C:\\Windows\\Fonts\\Arial.ttf", 0, &face); FT_Set_Pixel_Sizes( face, 0, size); int num_chars = ( END_CHAR - START_CHAR); auto width_ = num_chars*size; auto height_ = size; std::vector<unsigned char> buffer( width_ * height_, 0); vec2 pen; for ( size_t c = ' '; c < '~'; c++) { err = FT_Load_Char( face, c, FT_LOAD_RENDER); //загружаем символ FT_Bitmap bmp = face->glyph->bitmap; //получаем картинку int advance = ( face->glyph->advance.x >> 6); // face->glyph->advance - что такое? Что тут происходит? int bitmapWidth = bmp.width; int bitmapHeight = bmp.rows; for ( int h = 0; h < bitmapHeight; ++h) { for ( int w = 0; w < bitmapWidth; ++w) { int index = h * bitmapWidth + pen.x; //pen - как понимаю, текущее положение "курсора" buffer[index + w] = bmp.buffer[w + bitmapWidth * h]; //попиксельно копируем } } pen.x += advance; //приращение, т.е. предполагается, что все символы будут расположены в один ряд }
и далее - как же полученное изображение в видеокарту загружать?
up-up, ответ ещё не найден!
glTexImage2D
the_siv
> glTexImage2D
а почему TexStorage не катит? И какой формат представления нужен? GL_RGBA пойдёт?
static_cast
> а почему TexStorage не катит? И какой формат представления нужен? GL_RGBA
> пойдёт?
Он только место выделяет.
static_cast
> GL_RGBA пойдёт?
GL_R8
вообще чертовщина какая-то. вместо букв какая-то интерференционная картина.
На прямую с FreeType не работал, но в старом SDL_ttf помогало glPixelStorei(GL_UNPACK_ALIGNMENT, 1) или glPixelStorei(GL_PACK_ALIGNMENT, 1). Не помню точно.
делал так, всё равно не работает.
а какие я должен загружать текстурные координаты? Точно так же, как и всегда? Или как?
Это уже было?
http://pmg.org.ru/nehe/nehe43.htm
я смотрел. Там же устаревший интерфейс фритайп... да и похоже, что проблема в создании текстуры, либо в её заполнении. Уж как я не пробовал, но она то черная, то вся в помехах без намёка на символы, то еще что-то.
Тема в архиве.