Как установить sdl ttf

Цикл уроков по SDL 2.0: урок 6 — Загружаем шрифты с помощью SDL_ttf

Как установить sdl ttf. Смотреть фото Как установить sdl ttf. Смотреть картинку Как установить sdl ttf. Картинка про Как установить sdl ttf. Фото Как установить sdl ttf

Это продолжение серии переводов туториалов от Twinklebear, в оригинале доступных тут. Перевод отчасти вольный и может содержать незначительные поправки или дополнения от переводчика. Перевод первых двух уроков — за авторством InvalidPointer, а третьего и четвертого — за k1-801.

Загружаем шрифты с помощью SDL_ttf

В этом уроке мы узнаем, как отображать шрифты формата True Type font с помощью библиотеки-расширения SDL_ttf. Установка библиотеки идентична установке SDL_image в Уроке 3, но вместо “image” просто пишем “ttf” (пользователям Windows стоит еще скопировать включенный dll freetype). Так что загрузите SDL_ttf, взгляните на документацию и приступайте к уроку!

Первое, что нам нужно для работы с SDL_ttf, — это ttf шрифт. Используя BitFontMaker, автор сделал довольно ужасный шрифт, который вы можете скачать из репозитория, но если у вас уже имеется свой красивый шрифт, то можно использовать его. Этот шрифт предоставляет только простые символы ASCII, так что если вы попробуете отобразить не-ASCII символы, то скорее всего это не получится. Код этого урока будет написан на основе урока 5, как обычно вы можете скачать его с Github. Изображения, нарезанные спрайты и рисунки будут изменены в этом уроке.

Отображаемый текст

SDL_ttf обеспечивает несколько способов отображения шрифтов различной скорости и качества, а также возможность отображения UTF8 и Unicode символов. Документация предоставляет неплохой обзор различных методов отображения, так что стоит почитать и узнать о них больше, когда и какой метод вы хотите использовать в зависимости от ваших требований к качеству и скорости. В этом уроке мы будем использовать TTF_RenderText_Blended, так как у нас нет никаких временных ограничений и хотим, чтобы наш текст был красивым. Различные функции отображения текста принимают цвет в формате RGB SDL_Color, который мы можем использовать, чтобы подобрать цвет текста для отрисовки.

К сожалению, SDL_ttf может отображать только на поверхность, поэтому придется выполнить дополнительный шаг после визуализации текста, чтобы создать из него текстуру, которую мы можем нарисовать с помощью рендерера. Конечно, еще будет нужно загрузить шрифт, который мы будем использовать, что делается с помощью TTF_OpenFont, где также можно указать желаемый размер шрифта.

Пишем функцию renderText

Чтобы упростить себе жизнь, создадим функцию renderText, которая будет принимать текст, файл, содержащий шрифт TTF, цвет, желаемый размер и рендерер для загрузки окончательной текстуры. Функция открывает шрифт, отображает текст, преобразует его в текстуру и возвращает текстуру. Так как могут возникнуть проблемы, нужно проверить каждый вызов библиотеки на ошибки и правильно их обработать, например, почистить ресурсы, логгировать ошибки и вернуть nullptr, чтобы мы знали, что произошло что-то плохое. SDL_ttf сообщает все свои ошибки через SDL_GetError, так что можно продолжать использовать logSDLError для логгирования ошибок.

Держа в уме эти требования, давайте напишем функцию renderText:

Предупреждение о производительности

Очень важно заметить, что каждый раз, когда хотим отобразить текст, заново открываем и закрываем шрифт, что подходит в нашем случае, так как отображаем текст один раз, но если мы захотим отобразить много текста и/или слишком часто, то лучшей идеей будет держать шрифт открытым столько, сколько нам нужно. Наша версия renderText для этого более частого случая будет принимать TTF_Font* вместо названия файла шрифта и не будет открывать и закрывать, так как жизнь файла шрифта будет регулироваться отдельно.

Инициализируем SDL_ttf

Как и с SDL нам нужно инициализировать библиотеку перед тем, как использовать ее. Это делается с помощью TTF_Init, который вернет 0 в случае успеха. Чтобы инициализировать SDL_ttf, мы лишь вызываем эту функцию после инициализации SDL и проверяем вернувшееся значение, чтобы убедиться, что все нормально.

Используем renderText

С помощью нашей удобной функции renderText мы можем отображать текст одним простым вызовом. Для этого урока отобразим текст “TTF fonts are cool!” белого цвета, размера 64 шрифтом, который мы скачали до этого. Затем мы можем запросить ширину и высоту так же, как и для любой другой текстуры, и вычислить координаты x/y, чтобы нарисовать сообщение в центре окна.

Рисуем текст

В конце концов можем нарисовать текстуру, как мы это делали до этого с помощью функции renderTexture.

Если все пошло по плану, вы увидите что-то вроде такого:

Как установить sdl ttf. Смотреть фото Как установить sdl ttf. Смотреть картинку Как установить sdl ttf. Картинка про Как установить sdl ttf. Фото Как установить sdl ttf

Конец урока 6

Это все, что нужно знать, чтобы начать пользоваться SDL_ttf! Не забудьте посмотреть документацию, чтобы увидеть, на что эта библиотека способна. Как обычно, если у вас возникнут проблемы с уроком, можете писать в комментариях.

Автор стал занят другими проектами и не сможет писать уроки больше, так что это был последний урок из цикла. Вы можете посмотреть уроки от Lazy Foo или почитать примеры и документацию из SDL wiki.

Источник

Установка sdl2 на основные дистрибутивы

Здравствуй, Хабр. Недавно наткнулся на новый цикл статей по sdl2, но без процедуры установки. Вроде ничего сложного, но если интересно, то давайте вместе пройдемся по граблям, которые могут нас ожидать. Я проведу установку для xcode10 на macOS 10.14.5, code::blocks на Ubuntu 18.04 и Visual Studio 2019 Windows 10. Можно, конечно, было бы использовать clion. Одна ide на всех системах, но мне по какой-то причине не нравится их продукт. Ничего личного, просто кодинг.

Для проверки я буду использовать следующий код.

Ubuntu

Ставим code::blocks из магазина — здесь никаких неожиданностей. Далее создаем простенький файл mian.cpp для теста.

Если не собираетесь компилировать из терминала, то нужно указать target в настройках проекта.

Как установить sdl ttf. Смотреть фото Как установить sdl ttf. Смотреть картинку Как установить sdl ttf. Картинка про Как установить sdl ttf. Фото Как установить sdl ttf

Отлично. Далее нужно установить сам sdl2. Пишем в терминале

После установки дадим знать ide, что нужно использовать sdl2. Перейдем в в раздел «project»->«build options». Нас интересует вкладка «Linker settings». В окно «other linker options» добавим «-lSDL2».

Как установить sdl ttf. Смотреть фото Как установить sdl ttf. Смотреть картинку Как установить sdl ttf. Картинка про Как установить sdl ttf. Фото Как установить sdl ttf

Заменяем на наш код. Отлично, окно рисуется.

Как установить sdl ttf. Смотреть фото Как установить sdl ttf. Смотреть картинку Как установить sdl ttf. Картинка про Как установить sdl ttf. Фото Как установить sdl ttf

macOS

Для установки вы можете использовать установочный образ с Сайта. На данный момент последняя стабильная версия 2.0.9.

Скачиваем и копируем в каталог /Library/Frameworks. Для использования может потребоваться аутентификация.

Запускаем xcode и выбираем проект command line tool macOS. Даем имя проекту и выбираем язык C++.

Чтобы добавить поддержку sdl2, необходимо перейти в «настройки проекта»->«build phases»->«link binary with libraries» и добавить элемент. В открывшемся окне выбрать «add other»

Как установить sdl ttf. Смотреть фото Как установить sdl ttf. Смотреть картинку Как установить sdl ttf. Картинка про Как установить sdl ttf. Фото Как установить sdl ttf

Добавляем наш файл /Library/Frameworks/SDL2.framework и можем проверять.

Все работает, поехали дальше.

Как установить sdl ttf. Смотреть фото Как установить sdl ttf. Смотреть картинку Как установить sdl ttf. Картинка про Как установить sdl ttf. Фото Как установить sdl ttf

Windows

Установите vs studio. Скачайте библиотеку. Распакуйте содержимое и расположите где вам больше нравится. Я очень редко использую windows, поэтому не знаю, где хранятся все остальные библиотеки.

Создаем проект с пустым cpp файлом, либо консольное приложение, как вам удобно.
Перейдите в «проект»->«свойства»->«C/C++»->«дополнительные каталоги включаемых файлов». Добавьте путь к распакованному каталогу, указав include. В моем случае вышло \\Mac\Home\Downloads\SDL2-2.0.9\include, т.к. у меня виртуальная машина.

Как установить sdl ttf. Смотреть фото Как установить sdl ttf. Смотреть картинку Как установить sdl ttf. Картинка про Как установить sdl ttf. Фото Как установить sdl ttf

После этого в разделе «компоновщик»->«общие»->«дополнительные каталоги библиотек» нужно указать путь к SDL2.dll, например \\Mac\Home\Downloads\SDL2-2.0.9\lib\x64.

Осталось немного, «компоновщик»->«ввод»->«дополнительные зависимости» мы дописываем то, что необходимо использовать, SDL2.lib, SDL2main.lib, SDL2test.lib. После этого необходимо собрать проект. Собрав, скопируйте файл SDL2.dll из каталога lib\x64 или lib\x32 и поместите рядом с исполняемым файлом. Теперь пробуем наш код. Еще один момент: т.к. в «дополнительные каталоги включаемых файлов» мы указали путь сразу до подключаемых заголовков, то

Как установить sdl ttf. Смотреть фото Как установить sdl ttf. Смотреть картинку Как установить sdl ttf. Картинка про Как установить sdl ttf. Фото Как установить sdl ttf

Поздравляю, мы успешно собрали приложения под основные платформы. Надеюсь, у вас не возникнет трудностей при установке.

Источник

Попытка установить SDL_ttf в Visual Studio Express 2012 для Windows Desktop

Я пытаюсь установить SDL_ttf в Visual Studio Express 2012 для Windows Desktop, и у меня есть небольшой пример программы, которая прекрасно компилируется, но при ее запуске появляется всплывающее окно с сообщением об ошибке: «Приложение не удалось правильно запустить (0xc000007b). Нажмите кнопку ОК, чтобы закрыть приложение «.

Изначально я получил базовый SDL для работы, затем попытался добавить шрифт SDL. Я сделал следующее, но у меня все еще есть проблема, если бы кто-то мог помочь мне, это было бы очень ценно …

2) Я добавил свои каталоги включения для SDL и SDL_ttf в свойствах проекта (в разделе Проект >> Свойства >> Свойства конфигурации >> Каталоги VC ++ >> Включить каталоги)

Это («… \ Основные библиотеки SDL \ SDL-1.2.15 \ include»)
и («… \ Библиотеки шрифтов SDL \ SDL_ttf-2.0.11 \ include»)

3) Я добавил свои дополнительные зависимости для SDL и SDL_ttf (в разделе «Проект»> «Свойства»> «Свойства конфигурации» >> «Линкер» >> «Вход» >> «Дополнительные зависимости»), куда я помещаю:
SDL.lib
SDLMain.lib
SDL_ttf.lib
встроенный — это выглядит так: SDL.lib; SDLMain.lib; SDL_ttf.lib;% (AdditionalDependencies)

И это мой небольшой пример исходного кода программы:

Решение

Этот вопрос может быть переименован в «Попытка установить стороннюю библиотеку в Visual Studio Express 2012 для Windows Desktop». Хотя ваши шаги работают, они несколько неоптимальны, особенно если вы планируете поделиться своим проектом и поработать с другими над ним!

В основном, такие библиотеки имеют 3 основных типа файлов: заголовки, библиотеки а также двоичные файлы. Вот несколько советов о том, как улучшить ваш проект:

Изменить: Кроме того, для совместного использования проектов, в зависимости от менталитета проекта, вы можете включить внешние библиотеки в систему контроля версий. Я знаю, что пользователи Linux будут полностью возражать против этого, но это то, что я видел очень часто. Это гарантирует, что все используют версию библиотеки, которая соответствует коду (например, если вы обновите библиотеку до более новой версии и изменился интерфейс, если вы только измените код в системе управления версиями, вы должны будете предупредить другие члены команды должны вручную обновить новую библиотеку, как если бы она находилась в вашем контроле исходного кода, синхронизация позволила бы им соответствовать как проекту, так и внешним библиотекам).

Другие решения

Источник

Цикл уроков по SDL 2.0: урок 3 — Библиотеки-расширения SDL

Как установить sdl ttf. Смотреть фото Как установить sdl ttf. Смотреть картинку Как установить sdl ttf. Картинка про Как установить sdl ttf. Фото Как установить sdl ttf

Я продолжаю заброшенную серию переводов туториалов от Twinklebear, в оригинале доступных тут, с разрешения переводчика предыдущих уроков серии InvalidPointer. Первые два урока серии переводов в списке — за его авторством, 5 и 6 перевёл AndrewChe. Перевод отчасти вольный и может содержать незначительные поправки или дополнения от переводчика.

Список уроков:

Библиотеки-расширения SDL

До этого момента мы использовали только изображения в формате BMP, поскольку это единственный тип изображений, поддерживаемый основной библиотекой SDL 2, и это не очень-то удобно. К счастью, существует множество библиотек-расширений для SDL, добавляющих полезные возможности, например, SDL_image позволяет загружать многие типы изображений, SDL_ttf добавляет поддержку отрисовки текста с помощью шрифтов в формате TTF, SDL_net — низкоуровневую поддержку сети, а SDL_mixer — вывод многоканального аудио.

Установка расширения

В этом уроке мы будем использовать только SDL_image, однако процесс установки для остальных расширений не отличается, и, в целом, почти совпадает с таковым для установки самой SDL2.

Инициализация SDL_image (не обязательно)

При первой загрузке изображения каждого типа SDL_image автоматически инициализирует необходимую для этого типа подсистему, однако, это вызовет небольшую задержку. Чтобы этого избежать, можно заранее проинициализировать необходимые подсистемы с помощью функции IMG_Init. IMG_Init возвращает битовую маску со списком всех успешно проинициализированных на данный момент подсистем, поэтому для проверки успешности вызова необходимо проверить, что биты для всех указанных для инициализации подсистем были установлены, например, применив маску к результату побитовым И. Для этого урока нам хватит только одной подсистемы PNG. Важно проводить эту операцию после SDL_Init.

Зададим размеры

В этом уроке мы рассмотрим, как загружать изображения с помощью SDL_image, как масштабировать текстуры при отрисовке и замостим фон плиткой более рациональным способом, нежели в предыдущем уроке — циклом, основывающемся на размерах окна и плиток.

Но для начала зададим константу для размера плиток, прямо под константами для размеров окна.

Загрузка изображений с помощью SDL_image

SDL_image позволяет загрузить несколько типов изображений, а так же сразу преобразовать их в SDL_Texture функцией IMG_LoadTexture. Эта функция заменяет почти весь код функции loadTexture из предыдущего урока, теперь достаточно просто вызвать IMG_LoadTexture, проверить, не возникло ли ошибок при загрузке, и выйти из функции. Поскольку определённая в SDL_image функция IMG_GetError — не более чем синоним для SDL_GetError, для вывода сообщений об ошибках мы можем использовать любую из них.

Указываем высоту и ширину для отрисовки

Если при отрисовке текстуры на рендерер указать размер прямоугольника, отличный от размера самой текстуры, SDL2 отмасштабирует её соответствующим образом. Однако, если масштабирование не требуется, то каждый раз определять исходный размер текстуры может быть неудобно, поэтому мы реализуем две версии функции renderTexture, одна из которых будет отрисовывать текстуру с масштабированием, а вторая — без.

Загрузка текстур

Поскольку основная цель этого урока — загрузка изображений PNG, мы воспользуемся новым набором изображений. Также, мы продемонстрируем сохранение прозрачности PNG при отрисовке изображения переднего плана (с прозрачным фоном) поверх замощёного плиткой фона.

Мы будем использовать вот эти картиночки:

Плитка для заполнения фона:

Как установить sdl ttf. Смотреть фото Как установить sdl ttf. Смотреть картинку Как установить sdl ttf. Картинка про Как установить sdl ttf. Фото Как установить sdl ttf

Изображение переднего плана (как на нём и написано, с прозрачным фоном, а так же снова со смайликами, нарушающими правила Хабра):

Как установить sdl ttf. Смотреть фото Как установить sdl ttf. Смотреть картинку Как установить sdl ttf. Картинка про Как установить sdl ttf. Фото Как установить sdl ttf

Замощение фона

Поскольку плитки стали заметно меньше, нам понадобится поставить больше четырёх штук, чтобы заполнить всё окно, и указывать позицию для каждой вручную будет довольно сложно. К счастью, можно заставить компьютер определять эти позиции самостоятельно.

Мы можем узнать, сколько нужно плиток в ширину, поделив ширину окна на размер плитки, и аналогично для высоты.

Отрисовка изображения переднего плана

Как и прежде, изображение переднего плана помещается в середине окна.

Осталось только отобразить результат на окне и подождать пару секунд, так же, как и во втором уроке.

Очистка

Освобождение ресурсов аналогично таковому в уроке 2 (и уже встречалось выше, при обработке ошибки загрузки изображения), за исключением добавившегося вызова IMG_Quit.

После успешной компиляции и запуска, если вы всё сделали правильно, окно будет выглядеть примерно так:

Источник

Цикл уроков по SDL 2.0: урок 6 — Загружаем шрифты с помощью SDL_ttf

Как установить sdl ttf. Смотреть фото Как установить sdl ttf. Смотреть картинку Как установить sdl ttf. Картинка про Как установить sdl ttf. Фото Как установить sdl ttf

Это продолжение серии переводов туториалов от Twinklebear, в оригинале доступных тут. Перевод отчасти вольный и может содержать незначительные поправки или дополнения от переводчика. Перевод первых двух уроков — за авторством InvalidPointer, а третьего и четвертого — за k1-801.

Загружаем шрифты с помощью SDL_ttf

В этом уроке мы узнаем, как отображать шрифты формата True Type font с помощью библиотеки-расширения SDL_ttf. Установка библиотеки идентична установке SDL_image в Уроке 3, но вместо “image” просто пишем “ttf” (пользователям Windows стоит еще скопировать включенный dll freetype). Так что загрузите SDL_ttf, взгляните на документацию и приступайте к уроку!

Первое, что нам нужно для работы с SDL_ttf, — это ttf шрифт. Используя BitFontMaker, автор сделал довольно ужасный шрифт, который вы можете скачать из репозитория, но если у вас уже имеется свой красивый шрифт, то можно использовать его. Этот шрифт предоставляет только простые символы ASCII, так что если вы попробуете отобразить не-ASCII символы, то скорее всего это не получится. Код этого урока будет написан на основе урока 5, как обычно вы можете скачать его с Github. Изображения, нарезанные спрайты и рисунки будут изменены в этом уроке.

Отображаемый текст

SDL_ttf обеспечивает несколько способов отображения шрифтов различной скорости и качества, а также возможность отображения UTF8 и Unicode символов. Документация предоставляет неплохой обзор различных методов отображения, так что стоит почитать и узнать о них больше, когда и какой метод вы хотите использовать в зависимости от ваших требований к качеству и скорости. В этом уроке мы будем использовать TTF_RenderText_Blended, так как у нас нет никаких временных ограничений и хотим, чтобы наш текст был красивым. Различные функции отображения текста принимают цвет в формате RGB SDL_Color, который мы можем использовать, чтобы подобрать цвет текста для отрисовки.

К сожалению, SDL_ttf может отображать только на поверхность, поэтому придется выполнить дополнительный шаг после визуализации текста, чтобы создать из него текстуру, которую мы можем нарисовать с помощью рендерера. Конечно, еще будет нужно загрузить шрифт, который мы будем использовать, что делается с помощью TTF_OpenFont, где также можно указать желаемый размер шрифта.

Пишем функцию renderText

Чтобы упростить себе жизнь, создадим функцию renderText, которая будет принимать текст, файл, содержащий шрифт TTF, цвет, желаемый размер и рендерер для загрузки окончательной текстуры. Функция открывает шрифт, отображает текст, преобразует его в текстуру и возвращает текстуру. Так как могут возникнуть проблемы, нужно проверить каждый вызов библиотеки на ошибки и правильно их обработать, например, почистить ресурсы, логгировать ошибки и вернуть nullptr, чтобы мы знали, что произошло что-то плохое. SDL_ttf сообщает все свои ошибки через SDL_GetError, так что можно продолжать использовать logSDLError для логгирования ошибок.

Держа в уме эти требования, давайте напишем функцию renderText:

Предупреждение о производительности

Очень важно заметить, что каждый раз, когда хотим отобразить текст, заново открываем и закрываем шрифт, что подходит в нашем случае, так как отображаем текст один раз, но если мы захотим отобразить много текста и/или слишком часто, то лучшей идеей будет держать шрифт открытым столько, сколько нам нужно. Наша версия renderText для этого более частого случая будет принимать TTF_Font* вместо названия файла шрифта и не будет открывать и закрывать, так как жизнь файла шрифта будет регулироваться отдельно.

Инициализируем SDL_ttf

Как и с SDL нам нужно инициализировать библиотеку перед тем, как использовать ее. Это делается с помощью TTF_Init, который вернет 0 в случае успеха. Чтобы инициализировать SDL_ttf, мы лишь вызываем эту функцию после инициализации SDL и проверяем вернувшееся значение, чтобы убедиться, что все нормально.

Используем renderText

С помощью нашей удобной функции renderText мы можем отображать текст одним простым вызовом. Для этого урока отобразим текст “TTF fonts are cool!” белого цвета, размера 64 шрифтом, который мы скачали до этого. Затем мы можем запросить ширину и высоту так же, как и для любой другой текстуры, и вычислить координаты x/y, чтобы нарисовать сообщение в центре окна.

Рисуем текст

В конце концов можем нарисовать текстуру, как мы это делали до этого с помощью функции renderTexture.

Если все пошло по плану, вы увидите что-то вроде такого:

Как установить sdl ttf. Смотреть фото Как установить sdl ttf. Смотреть картинку Как установить sdl ttf. Картинка про Как установить sdl ttf. Фото Как установить sdl ttf

Конец урока 6

Это все, что нужно знать, чтобы начать пользоваться SDL_ttf! Не забудьте посмотреть документацию, чтобы увидеть, на что эта библиотека способна. Как обычно, если у вас возникнут проблемы с уроком, можете писать в комментариях.

Автор стал занят другими проектами и не сможет писать уроки больше, так что это был последний урок из цикла. Вы можете посмотреть уроки от Lazy Foo или почитать примеры и документацию из SDL wiki.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *