绘制文本到屏幕

时间:2016-03-24 11:07:56

标签: c++ text sdl

所以我只想指出我对引擎外的代码很新,所以这对我来说有点新鲜。

我正在使用SDL作为游戏的基础,并想知道在屏幕上以分数/时间的形式绘制文本的简单方法。

到目前为止,在搜索时我还没有发现任何我真正了解或如何使用的东西。在使用标签SDL进行搜索时,我发现最常见的是SDL_ttf,我试图调查但没有成功。

所以再一次,我正在寻找一种以分数/时间的形式显示文本,字符串和浮点数/ int的简单方法。

2 个答案:

答案 0 :(得分:1)

仅SDL库SDL不支持将文本写入屏幕。您的搜索引导至SDL_ttf,这是正确的库。

使用示例(只有额外代码,假设您已调用SDL_Init,已创建SDL_Window并且您有SDL_Renderer* renderer该窗口。

const SDL_Rect* dstrect;
SDL_Color color;

TTF_Init();
TTF_Font* font = TTF_OpenFont("font.ttf" /*path*/, 15 /*size*/);
SDL_Surface* textSurface = TTF_RenderText_Blended(font, "Text to render", color);

SDL_Texture* textTexture = SDL_CreateTextureFromSurface(renderer, textSurface);
SDL_RenderCopy(renderer, textTexture, NULL, dstrect);

SDL_FreeSurface(textSurface);
SDL_DestroyTexture(textTexture);
TTF_CloseFont(font);
TTF_Quit();

查看其他TTF_RenderText_*方法的文档以及它们的不同之处。

由于您使用的是C ++(SDL和SDL_ttf都在C语言中),您可能想要围绕TTF渲染编写一些包装器。

答案 1 :(得分:0)

你需要SDL ttf库 - 它可以相对简单地处理truetype字体。

http://www.libsdl.org/projects/SDL_ttf/ 和文件 http://jcatki.no-ip.org:8080/SDL_ttf/ http://jcatki.no-ip.org:8080/SDL_ttf/SDL_ttf.html

特别参阅TTF_OpenFontTTF_CloseFont的文档(打开和关闭字体文件) 和渲染函数,例如TTF_RenderText_Solid

在你的位置,我可能会编写一些辅助函数来处理包装这些文件的绘图文本,传递字符串,绘制位置等等,并在需要打印乐谱等时调用它们。