重新加载TTF_Font *以仅使用TTF_OpenFontRW更改磅值?

时间:2018-09-17 16:22:36

标签: c++ performance sdl true-type-fonts

我希望能够使用TTF_Font *对象动态调整在屏幕上渲染的文本的大小。我现在的操作方式是关闭字体

TTF_CloseFont(font);

,然后在使用新的磅值后立即将其打开

font = TTF_OpenFont(filepath, new_pointsize);

现在我的问题是,这是做事的有效方法吗?这是否意味着每次我重新加载字体,更改磅值时,都删除字体的内存结构,然后创建一个新的字体,这意味着我再次从磁盘读取了整个文件?

现在,为了提高效率,我想以某种方式将我的.ttf文件保留在内存中,并只是更改它的大小。那可能吗?

我试图用SDL_RWops做某事,但没有成功。这是我在load函数中所做的:

font_rw = SDL_RWFromFile(filepath, "r");
font = TTF_OpenFontRW(font_rw, 0, pointsize);

以及我的reload函数中:

TTF_CloseFont(font);
font = TTF_OpenFontRW(font_rw, 0, pointsize);

现在的问题是,字体没有正确加载,所以我得到了NULL作为TTF_OpenFontRWreload的返回值。

0 个答案:

没有答案