質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

0回答

682閲覧

指定したピクセルサイズの枠の中文字を描画したいが一部の文字がはみ出てしまう。

退会済みユーザー

退会済みユーザー

総合スコア0

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/12/12 06:40

編集2021/12/12 06:49

提示コードですが下記のようなfontSize値のマス目にピッタリ一文字を表示させたいのですがQ,Zなどといった文字がマス目からはみ出てしまいます。これはどうしたらぴったりはめられるのでしょうか?

試したこと

参考サイトの書きのコードを入力しましたが出来ません。
決め打ちでピクセルをずらしましたがうまくできません。

参考サイトコード[ float ypos = y - (ch.Size.y - ch.Bearing.y); ]

参考サイト: https://learnopengl.com/In-Practice/Text-Rendering

![イメージ説明

Text

cpp

1 2// ##################################### テクスチャ 設定 ##################################### 3void FrameWork::D2::Text::setTexture(const std::vector<wchar_t>& wc, std::vector<Character>& text) 4{ 5 text.clear(); 6 //FT_Face face = LoadFont("font/PressStart2P.ttf"); 7 FT_Face face = LoadFont("font/SourceHanCodeJP.ttc"); 8 9 size = glm::ivec2(0,0); //サイズ 10 11 for (std::vector<wchar_t>::const_iterator itr = wc.begin(); itr != wc.end(); itr++) 12 { 13 14 FT_Error err = FT_Set_Pixel_Sizes(face, 0, pixelSize); 15 if( err != 0) 16 { 17 std::cerr<< "Error: FT_Set_Pixel_Sizes: " << err <<std::endl; 18 assert(0); 19 20 } 21 22 err = FT_Load_Glyph(face, FT_Get_Char_Index(face, *itr), FT_LOAD_RENDER); 23 if(err != 0) 24 { 25 std::cerr<< "Error: FT_Load_Glyph: " <<err<<std::endl; 26 assert(0); 27 28 } 29 30 Character ch = 31 { 32 0, 33 glm::lowp_u8vec2(face->glyph->bitmap.width, face->glyph->bitmap.rows), 34 glm::lowp_u8vec2(face->glyph->bitmap_left, face->glyph->bitmap_top), 35 (unsigned short)face->glyph->advance.x, 36 *itr, 37 }; 38 39 40 size.x = face->glyph->bitmap.width; 41 size.y = face->glyph->bitmap.rows; 42 bearing.x = face->glyph->bitmap_left; 43 bearing.y = face->glyph->bitmap_top; 44 45 46 47 glGenTextures(1, &ch.textureID); 48 glBindTexture(GL_TEXTURE_2D, ch.textureID); 49 glActiveTexture(GL_TEXTURE0); 50 //glPixelStorei(GL_UNPACK_ALIGNMENT, 1); 51 glTexImage2D 52 ( 53 GL_TEXTURE_2D, 54 0, 55 GL_RED, 56 face->glyph->bitmap.width, 57 face->glyph->bitmap.rows, 58 0, 59 GL_RED, 60 GL_UNSIGNED_BYTE, 61 face->glyph->bitmap.buffer 62 ); 63 64 //テクスチャタイプを設定 65 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 66 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 67 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 68 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 69 70 glBindTexture(GL_TEXTURE_2D,0); 71 text.push_back(ch); 72 } 73 74 size.x -= pixelSize; 75} 76 77
Draw
#include "Character.hpp" Character::Character() { text = std::make_shared<FrameWork::D2::Text>(); color = FrameWork::GetGlColor(glm::vec4(255,255,255,255)); fontSize = 25; position = glm::vec2(0,0); } void Character::setColor(glm::vec4 co) { color = co; } void Character::setCharacter(std::string str) { character = str; text->setString(fontSize, color, character.c_str()); } void Character::setFontSize(int size) { fontSize = size; } void Character::setPosition(glm::vec2 pos) { position = pos; } void Character::setTexture() { text->setString(fontSize,color,character.c_str()); } void Character::Update() { position.y = position.y + text->getSize().y + text->getBearing().y; } void Character::Renderer()const { text->Draw(position); } Character::~Character() { }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問