Аватар для Necronomicron
65 / 50 / 7
Регистрация: 09.11.2012
Сообщений: 219

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

14.10.2013, 22:50. Показов 10179. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В официальной доке как-то скомкано написано.
При инициализации 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);
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.10.2013, 22:50
Ответы с готовыми решениями:

Аналоговые часы используя библиотеку SDL.
Здравствуйте, нужно написать программу которая будет показывать правильное время на аналоговых часах с тремя стрелками с помощью библиотеки...

Как правильно подключить библиотеку SDL
Здравствуйте, подскажите, пожалуйста, как правильно подключить библиотеку SDL. Я пользуюсь компилятором Code::Blocks. При подключении...

Как внедрить графическую библиотеку SDL в Visual Studio 2012
Никогда не внедрял сторонних библиотек в Visual Studio. В инете поискал, но так ничего и не понял. Я вообще хочу подключить SDL 2.0 (качал...

6
погромист
 Аватар для coloc
415 / 251 / 30
Регистрация: 27.08.2012
Сообщений: 550
14.10.2013, 23:00
Цитата Сообщение от Necronomicron Посмотреть сообщение
SDL_Surface *place = 0;
Ты отображаешь текст на неинициализированой поверхности?
0
 Аватар для Necronomicron
65 / 50 / 7
Регистрация: 09.11.2012
Сообщений: 219
14.10.2013, 23:10  [ТС]
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);
То нет ошибки, но текста всё равно нет.
0
погромист
 Аватар для coloc
415 / 251 / 30
Регистрация: 27.08.2012
Сообщений: 550
14.10.2013, 23:12
На СДЛ 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);
0
 Аватар для Necronomicron
65 / 50 / 7
Регистрация: 09.11.2012
Сообщений: 219
15.10.2013, 04:12  [ТС]
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 символов. Не могу понять, откуда оно вообще берётся.
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
15.10.2013, 07:23
Разве перед '2' не нужно L?
Цитата Сообщение от Necronomicron Посмотреть сообщение
в конец добавляется какой-то мусор, 4-5 символов. Не могу понять, откуда оно вообще берётся.
Может быть нужен терминальный ноль в массиве.
1
 Аватар для Necronomicron
65 / 50 / 7
Регистрация: 09.11.2012
Сообщений: 219
15.10.2013, 07:26  [ТС]
alsav22, внатуре. Чот я сам не догадался попробовать...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.10.2013, 07:26
Помогаю со студенческими работами здесь

SDL: куда поместить библиотеку
Можете объяснить как установить sdl и кинуть (желательно на русском) туториалы для sdl на free pascal? сам скачал SDL.dll с...

SDL: вывести значение переменной
У меня есть часть кода if(((event.motion.x<=600)&&(event.motion.x>=500))&&((event.motion.y<=200)&&(event.motion.y>=100))){ ...

Как, используя gui, вывести текст на экран
Здравствуйте, подскажите пожалуйста, можно ли с помощью Guide или просто прописать вручную вывести нужный текст. Нужно написать сводку...

Эмуляция нажатия клавиш для SDL
Столкнулся с такой проблемой что на эмуляцию нажатия клавиш, SDL не реагирует. Точнее DOSBox. Пробовал 2 метода (WINAPI), оба не подходят....

Как пользоваться SDL
Здравствуйте, у меня такая проблема не как не могу найти как пользоваться SDL, за весь день я смог найти только как создать окно, на этом...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Мастер-класс по микросервисам на Node.js
Reangularity 21.06.2025
Node. js стал одной из самых популярных платформ для микросервисной архитектуры не случайно. Его неблокирующая однопоточная модель и событийно-ориентированный подход делают его идеальным для. . .
Управление Arduino из WPF приложения
Wired 21.06.2025
Зачем вообще связывать Arduino с WPF-приложением? Казалось бы, у Arduino есть собственная среда разработки, своя экосистема, свои способы управления. Однако при создании серьезных проектов. . .
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C# Задание 1: КЛАСС FORM 1 public partial class Form1 : Form { Spisok listin = new Spisok(); . . .
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru