我最近一直试图在游戏中使用字形实现文本渲染。我已经能够将它们渲染到屏幕上,但我希望能够缩放它们,而不会让它们移出正在渲染的当前行。
例如,它应该如下所示:
不是这个:
换句话说,我希望所有的字形沿着共同的原点排列。我已经尝试使用我自己的算法使用Glyph Metrics来尝试准确地放置字形然后我将它们乘以比例。我所尝试的并不适用于每个角色或每个尺度。
感谢@Scheff指出我正确的方向。使用我发现的与他们给我的相关的帖子,我能够开发出两个独立的公式 - 一个用于对齐字形的顶部,另一个用于对齐字形的底部。我想我会把它们发布在这里,以帮助其他人解决这个问题。以下是两个功能:
TTF_Font font;
float scaleOfText;
int maxY;
int positionInput, realPositionValue; /*positionInput is where the program is told that the glyphs
should be rendered on the y-axis and realPositionValue is the position on the y-axis where the
glyphs will be rendered once they are aligned*/
char glyph;
TTF_GlyphMetrics(font, glyph, nullptr, nullptr, nullptr, &maxY, nullptr);
//Formula itself:
realPositionValue = positionInput - (TTF_FontAscent(font) * scale - (maxY * scale));
这看起来像这样:https://imgur.com/a/wtjcuSE
TTF_Font font;
float scaleOfText;
int maxY;
int positionInput, realPositionValue; /*positionInput is where the program is told that the glyphs
should be rendered on the y-axis and realPositionValue is the position on the y-axis where the
glyphs will be rendered once they are aligned*/
char glyph;
TTF_GlyphMetrics(font, glyph, nullptr, nullptr, nullptr, &maxY, nullptr);
//Formula itself:
realPositionValue = (positionInput + maxY * scale) - ((TTF_FontAscent(font) + maxY) * scale);
这看起来像这样:https://imgur.com/a/v8RXaii
我还没有用混合在一起的不同字体来测试它,但我认为它应该也能正常工作。我希望这可以帮助任何遇到类似问题的人。再次感谢大家的帮助!