提示子画像ですが文字の高さを取得して表示してみましたが少しずれています。これはなぜでしょうか?参考サイトの文字の図を参考にheightを取得して一番文字の大きい高さの文字の高さを取得しているのですが原因がわかりません。提示コードの下部の//######## コメント部です。
やりたいこと
表示文字列の中で一番高い文字の高さが欲しい height
提示サイトのlearnOpenGLのグリフマテリアルのheightの値を取得したのですがそれが白い点の部分です。
face->glyph->bitmap.rows。の値を取得なぜ高さを取得したににも関わらず少しずれるのでしょうか?
参考サイト: https://learnopengl.com/In-Practice/Text-Rendering
cpp
1 2// ##################################### テクスチャを生成 ##################################### 3std::vector<FrameWork::Text::Character> FrameWork::Text::getTexture(std::vector<wchar_t> text,glm::ivec2 &size) 4{ 5 std::vector<Character> character; //文字データを格納 6 7 8 //文字をロード 9 for (int i = 0; text[i] != L'\0'; i++) 10 { 11 //グリフをロード 12 FT_Load_Glyph(face, FT_Get_Char_Index(face, text[i]), FT_LOAD_RENDER); 13 Character ch = 14 { 15 0, 16 glm::ivec2(face->glyph->bitmap.width, face->glyph->bitmap.rows), 17 glm::ivec2(face->glyph->bitmap_left, face->glyph->bitmap_top), 18 (unsigned int)face->glyph->advance.x 19 }; 20 21 glGenTextures(1, &ch.textureID); 22 glBindTexture(GL_TEXTURE_2D, ch.textureID); 23 glActiveTexture(GL_TEXTURE0); 24 25 glTexImage2D 26 ( 27 GL_TEXTURE_2D, 28 0, 29 GL_RED, 30 face->glyph->bitmap.width, 31 face->glyph->bitmap.rows, 32 0, 33 GL_RED, 34 GL_UNSIGNED_BYTE, 35 face->glyph->bitmap.buffer 36 ); 37 38 //テクスチャタイプを設定 39 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 40 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 41 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 42 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 43 44 45 46 //文字列のサイズを取得 47 size.x += face->glyph->advance.x >> 6; 48 49 50 //############################################################################### 51 //std::cout << face->glyph->advance.y << std::endl; 52 std::cout << face->glyph->bitmap.rows << std::endl; 53 54 if (face->glyph->bitmap.rows >= size.y) 55 { 56 size.y = face->glyph->bitmap.rows; 57 } 58 //############################################################################### 59 60 61 62 //テクスチャを生成 63 character.push_back(ch); 64 } 65 66 67 return character; 68} 69
回答1件
あなたの回答
tips
プレビュー