Я хочу разбить строку, введя '\n' в строку и отобразить текст.
В настоящее время, если я пытаюсь разорвать строку после ввода '\n', вывод рендеринга выглядит следующим образом.
Я хотел бы, чтобы вторая строка была выровнена с первой строкой.
это код
// Iterate through all characters
std::string::const_iterator c;
for (c = text.begin(); c != text.end(); c++)
{
Character ch = Characters[*c];
GLfloat xpos = x + ch.Bearing.x * scale;
GLfloat ypos = y - (ch.Size.y - ch.Bearing.y) * scale;
// i check the input here
// if( *ch == '\n')
// Reset the Xpos value in the freetype.
GLfloat w = ch.Size.x * scale;
GLfloat h = ch.Size.y * scale;
// Update VBO for each character
GLfloat vertices[6][4] = {
{ xpos, ypos + h, 0.0, 0.0 },
{ xpos, ypos, 0.0, 1.0 },
{ xpos + w, ypos, 1.0, 1.0 },
{ xpos, ypos + h, 0.0, 0.0 },
{ xpos + w, ypos, 1.0, 1.0 },
{ xpos + w, ypos + h, 1.0, 0.0 }
};
// Render glyph texture over quad
glBindTexture(GL_TEXTURE_2D, ch.textureID);
// Update content of VBO memory
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertices), vertices);
glBindBuffer(GL_ARRAY_BUFFER, 0);
// Render quad
glDrawArrays(GL_TRIANGLES, 0, 6);
x += (ch.Advance >> 6) * scale;
}
Хотя мне удалось добиться этого, увеличив переменную с плавающей запятой на заданное значение и вычтя переменную из xpos. Что, по моему мнению, является обходным путем.
Есть ли у нас какая-либо функция в фритайпе для сброса Xpos шрифта в исходное положение.
x
контролируется вашим кодом (freetype не может знать, как вы это делаете). Что такоеx
в начале? Сброситьx
, определить перевод строки (y = y + linefeed
) иcontinue
цикл. - person Rabbid76   schedule 04.12.2019