ライブラリ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レンダリングに関するラッパーを記述することをお勧めします。
ああ、申し訳ありません.C++を使用しています –
これで苦労しているのであれば、エンジンに戻る価値があるかもしれません。スニーカーではありません。SDLは、この種の問題を繰り返しあなたに伝えます。これは、ゲームエンジンよりも一般的な目的であり、しばしば文書化されていません。 – DanBennett
あなたは確かにSDL_ttfを使用することはできません。ビットマップにレンダリングできる別のフォントレンダラー(win32関数 'DrawText'など)を使用することもできます。また、[単色のビットマップフォントで簡単なフォントレンダラーを作成することもできます(http://lazyfoo.net/ SDL_tutorials/lesson30 /)。しかし、あなたのベースとしてSDLを使い続けたいと思っているなら、本当に簡単な選択肢はありません。 – PeterT