‘орум программистов, компьютерный форум CyberForum.ru

 ак вывести текст на экран, использу€ библиотеку SDL TTF дл€ SDL 2? - C++

¬осстановить пароль –егистраци€
 
–ейтинг: –ейтинг темы: голосов - 13, средн€€ оценка - 4.69
Necronomicron
 јватар дл€ Necronomicron
58 / 43 / 2
–егистраци€: 09.11.2012
—ообщений: 219
14.10.2013, 22:50      ак вывести текст на экран, использу€ библиотеку SDL TTF дл€ SDL 2? #1
¬ официальной доке как-то скомкано написано.
ѕри инициализации SDL TTF и при загрузке шрифта ошибок нет. Ќо текст на экране не по€вл€етс€.
C++
1
2
3
4
    SDL_Color fontColor = { 255, 0, 0, 255 };
    u16 text[] = { '2', 's', '√§' };
    SDL_Surface *place = 0;
    SDL_Surface *info = TTF_RenderUNICODE_Solid(font, text, fontColor);
¬ цикле:
C++
1
2
3
        SDL_BlitSurface(info, 0, place, 0);
        SDL_FreeSurface(info);
        SDL_RenderPresent(renderer);
Ќа вс€кий случай:
C++
1
font = TTF_OpenFont("Fonts/DinCompRegular.ttf", 24);
Similar
Ёксперт
41792 / 34177 / 6122
–егистраци€: 12.04.2006
—ообщений: 57,940
14.10.2013, 22:50      ак вывести текст на экран, использу€ библиотеку SDL TTF дл€ SDL 2?
ѕосмотрите здесь:

Ёмул€ци€ нажати€ клавиш дл€ SDL C++
C++ јналоговые часы использу€ библиотеку SDL.
как подключить dll и lib SDL C++
C++  ак на SDL 2 нарисовать пиксель?
C++ Ѕиблиотека дл€ 2d стратегии (аналоги SDL, SFML)
ѕосле регистрации реклама в сообщени€х будет скрыта и будут доступны все возможности форума.
coloc
погромист
 јватар дл€ coloc
409 / 245 / 15
–егистраци€: 27.08.2012
—ообщений: 550
«авершенные тесты: 1
14.10.2013, 23:00      ак вывести текст на экран, использу€ библиотеку SDL TTF дл€ SDL 2? #2
÷итата —ообщение от Necronomicron ѕосмотреть сообщение
SDL_Surface *place = 0;
“ы отображаешь текст на неинициализированой поверхности?
Necronomicron
 јватар дл€ Necronomicron
58 / 43 / 2
–егистраци€: 09.11.2012
—ообщений: 219
14.10.2013, 23:10  [“—]      ак вывести текст на экран, использу€ библиотеку SDL TTF дл€ SDL 2? #3
coloc, € уже по вс€кому пробовал. Ёто где-то в нете нашЄл.  огда пробовал:
C++
1
2
    SDL_Surface *info = TTF_RenderUNICODE_Solid(font, text, fontColor);
    SDL_Surface *place = SDL_CreateRGBSurface(0, info->w, info->h, 32, 0, 0, 0, 0);
ќшибка:
Ќеобработанное исключение по адресу 0x6C7DA01A (SDL2.dll) в Smth.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0x00000000.

ƒобавлено через 6 минут
≈сли закомментировать:
C++
1
SDL_FreeSurface(info);
“о нет ошибки, но текста всЄ равно нет.
coloc
погромист
 јватар дл€ coloc
409 / 245 / 15
–егистраци€: 27.08.2012
—ообщений: 550
«авершенные тесты: 1
14.10.2013, 23:12      ак вывести текст на экран, использу€ библиотеку SDL TTF дл€ SDL 2? #4
Ќа —ƒЋ 1.3 точно работает TTF_RenderText. „ерез юникод не хочет работать.
C++
1
2
3
4
5
6
7
8
TTF_Font *font = TTF_OpenFont("font.ttf", 20); //загружаем шрифт
SDL_Color color = { 255, 0, 0 };               //задаем цвет
SDL_Surface *text = TTF_RenderText_Solid(font, "text", color);//делаем текстовый спрайт 
SDL_Rect place = { 100, 100, 0, 0 };                          //место где будет отображен текст
SDL_BlitSurface(text, NULL, screen, place);                   //отображаем текст на экране
                                                    //на —ƒЋ2 нужно иначе                      
SDL_FreeSurface(text);                              //чистим зан€тие ресурсы
TTF_CloseFont(font);
Necronomicron
 јватар дл€ Necronomicron
58 / 43 / 2
–егистраци€: 09.11.2012
—ообщений: 219
15.10.2013, 04:12  [“—]      ак вывести текст на экран, использу€ библиотеку SDL TTF дл€ SDL 2? #5
coloc, но у мен€ SDL 2 и переходить на старый € точно не буду. я пробовал просто текст, ничего не мен€етс€.

ƒобавлено через 4 минуты
C++
1
SDL_BlitSurface(info, 0, place, &rect);
“еперь ошибки нет, но всЄ равно ничего не отображаетс€.

ƒобавлено через 4 часа 53 минуты
“ак, € решил проблему:
C++
1
2
    u16 text[] = { '2', L'ў', L'√§', L'√Ш' };
    SDL_Surface *info = TTF_RenderUNICODE_Blended(font, text, fontColor);
C++
1
2
3
        SDL_Rect src = { 0, 0, info->w, info->h };
        SDL_Rect dst = { 0, 0, info->w, info->h };
        SDL_RenderCopy(renderer, SDL_CreateTextureFromSurface(renderer, info), &src, &dst);
Ќо по€вилась друга€: в конец добавл€етс€ какой-то мусор, 4-5 символов. Ќе могу пон€ть, откуда оно вообще берЄтс€.
alsav22
5282 / 4801 / 442
–егистраци€: 04.06.2011
—ообщений: 13,587
15.10.2013, 07:23      ак вывести текст на экран, использу€ библиотеку SDL TTF дл€ SDL 2? #6
–азве перед '2' не нужно L?
÷итата —ообщение от Necronomicron ѕосмотреть сообщение
в конец добавл€етс€ какой-то мусор, 4-5 символов. Ќе могу пон€ть, откуда оно вообще берЄтс€.
ћожет быть нужен терминальный ноль в массиве.
MoreAnswers
Ёксперт
37091 / 29110 / 5898
–егистраци€: 17.06.2006
—ообщений: 43,301
15.10.2013, 07:26      ак вывести текст на экран, использу€ библиотеку SDL TTF дл€ SDL 2?
≈ще ссылки по теме:

 ак правильно подключить библиотеку SDL C++
 ак внедрить графическую библиотеку SDL в Visual Studio 2012 C++
C++  ак подключить SDL 2.0 в проекте с CMake?

»скать еще темы с ответами

»ли воспользуйтесь поиском по форуму:
Necronomicron
 јватар дл€ Necronomicron
58 / 43 / 2
–егистраци€: 09.11.2012
—ообщений: 219
15.10.2013, 07:26  [“—]      ак вывести текст на экран, использу€ библиотеку SDL TTF дл€ SDL 2? #7
alsav22, внатуре. „от € сам не догадалс€ попробовать...
Yandex
ќбъ€влени€
15.10.2013, 07:26      ак вывести текст на экран, использу€ библиотеку SDL TTF дл€ SDL 2?
ќтвет —оздать тему
ќпции темы

“екущее врем€: 10:32. „асовой по€с GMT +3.
 ибер‘орум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
–ейтинг@Mail.ru