使用SDL TTF for SDL 2无法查看我的文本

时间:2013-10-14 20:58:24

标签: c++ unicode sdl-ttf sdl-2

我想我做得很好,但无论如何我看不到我的文字。 Official docs很差(或SDL 2已过时)。

if (TTF_Init())
    printf("%s\n", TTF_GetError());
font = TTF_OpenFont("Fonts/DinCompRegular.ttf", 24);
if (!font)
    printf("%s\n", TTF_GetError());
SDL_Color fontColor = { 255, 0, 0, 255 };
u16 text[] = { '2', 's', 'ä', 'Щ' };
SDL_Surface *info = TTF_RenderUNICODE_Solid(font, text, fontColor);
SDL_Rect rect = { info->w, info->h, 0, 0 };
SDL_Surface *place = SDL_CreateRGBSurface(0, info->w, info->h, 32, 0, 0, 0, 0);

在主循环中:

    SDL_BlitSurface(info, 0, place, &rect);
    SDL_FreeSurface(info);
    SDL_RenderPresent(renderer);

1 个答案:

答案 0 :(得分:3)

我自己解决了这个问题:

u16 text[] = { '2', L'Щ', L'ä', L'Ø', '\0' };
SDL_Surface *info = TTF_RenderUNICODE_Blended(font, text, fontColor);

循环:

    SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, info);
    SDL_Rect src = { 0, 0, info->w, info->h };
    SDL_Rect dst = { 0, 0, info->w, info->h };
    SDL_RenderCopy(renderer, texture, &src, &dst);
    SDL_DestroyTexture(texture);