我希望能够使用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_OpenFontRW
中reload
的返回值。