В то время как обычные функции рендеринга ttf принимают const char * для текста, который они будут отображать. Функция TTF_RenderUNICODE_Solid() принимает const Uint *.TTF_RenderUNICODE_Solid() Функция Параметр Uint16?
Я использовал эту структуру для создания текстур из TTF поверхностей при работе с ASCII-символов:
Text = TTF_RenderText_Solid(times, title.c_str(), MakeColor(255, 0, 255));
ButtonTexture = SDL_CreateTextureFromSurface(renderer, Text);
.
И когда я хотел работать с юникодом Я попытался это:
Text = TTF_RenderUNICODE_Solid(times, title.c_str(), MakeColor(255, 0, 255));
ButtonTexture = SDL_CreateTextureFromSurface(renderer, Text);
.
Потому что title.c_str() является const char * и функция хочет const Uint16 Я не могу создать текстуру.
Это, как я прохожу название:
MenuButtons[0] = new CreateButton("TEXT");
void CreateButton(string title)
{
Text = TTF_RenderText_Solid(times, title.c_str(), MakeColor(255, 0, 255));
ButtonTexture = SDL_CreateTextureFromSurface(renderer, Text);
//or
Text = TTF_RenderUNICODE_Solid(times, title.c_str(), MakeColor(255, 0, 255));
ButtonTexture = SDL_CreateTextureFromSurface(renderer, Text);
}
Вопрос: Каким образом можно преобразовать строку в мой UInt16?
Что в 'title' во втором случае ? Если это не Unicode, почему вы используете функцию Unicode? –
Это юникод, я хочу, чтобы моя программа была способна отображать символы, такие как «ç, ş, ü, ğ, ı», которых у ASCII нет. – bfkjohns
Пришлите, пожалуйста, дополнительную информацию. Где происходит «титул»? Это utf-8, ascii или, например, латинский-1 текст? – HelloWorld