Прежде всего установите в вашей системе библиотеку SDL и SDL_ttf.
В Fedora єто делается так:
# yum install SDL-devel SDL_ttf-devel
После чего можно приступать к написанию кода.
Прежде всего подключим установленные нами библиотеки:
#include <SDL/SDL.h>
#include <SDL/SDL_ttf.h>
Определим размеры и заголовок окна.
const int WINDOW_WIDTH = 320;
const int WINDOW_HEIGHT = 240;
const char* WINDOW_TITLE = «SDL howto»;
После этого приступаем к формированию главной функции программы:
int main(int argc, char **argv)
{
Инициализиируем библиотеки:
SDL_Init( SDL_INIT_VIDEO );
TTF_Init();
Обратите внимание, что первая функция инициализирует библиотеку SDL и принимает в качестве параметра побитовую сумму необходимых комбинаций:
- SDL_INIT_TIMER — таймер
- SDL_INIT_AUDIO — аудио
- SDL_INIT_VIDEO — видео
- SDL_INIT_CDROM — работа с устройствами cd-rom
- SDL_INIT_JOYSTICK — работа с джойстиком
- SDL_INIT_EVERYTHING — все что было указано выше
- SDL_INIT_NOPARACHUTE
Нам понадобится только работа с видео. остальное в следующий раз..
Создадим окно:
SDL_Surface* screen = SDL_SetVideoMode( WINDOW_WIDTH, WINDOW_HEIGHT, 0, SDL_HWSURFACE | SDL_DOUBLEBUF );
- SDL_HWSURFACE — создавать буфер в видео памяти
- SDL_DOUBLEBUF — использовать двойной буфер
Третий параметр (0) — указывает SDL на то, что необходимо использовать системные настройки для цветности окна.
Первые два, как вы наверное поняли, — ширина и высота создаваемого окна.
Указываем заголовок окна:
SDL_WM_SetCaption( WINDOW_TITLE, 0 );
Второй параметр иконка для окна. 0 — стандартная иконка.
Загружаем файл со шрифтом:
TTF_Font* font = TTF_OpenFont(«ARIAL.TTF», 12);
Первый параметр — имя файл шрифта.
Второй — размер.
Зададим цвета:
SDL_Color foregroundColor = { 255, 255, 255 };
SDL_Color backgroundColor = { 0, 0, 255 };
Создаём надпись:
SDL_Surface* textSurface = TTF_RenderText_Shaded(font, «how2.org.ua», foregroundColor, backgroundColor);
Думаю с параметрами всё понятно.
Задаём размещение надписи:
SDL_Rect textLocation = { 100, 100, 0, 0 };
Для того, что бы окно не закрывалось задаём безконечный цикл обработки событий:
SDL_Event event;
bool gameRunning = true;
while (gameRunning){
if (SDL_PollEvent(&event)){
if (event.type == SDL_QUIT){
gameRunning = false;
}
}
SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0,0));
SDL_BlitSurface(textSurface, NULL, screen, &textLocation);
SDL_Flip(screen);
}
После этого завершаем работу библиотек и программы:
SDL_FreeSurface(textSurface);
TTF_CloseFont(font);
TTF_Quit();
SDL_Quit();
return 0;
}
Компилируется всё это дело вот такой командой:
g++ sdl_text.cpp -o sdl_text -lSDL -lSDL_ttf
Кроме того, обратите внимание, что для корректной работы необходимо поместить файл со шрифтом в папку с бинарником.
У меня получилось вот так:
На этом пока всё. Спасибо за внимание. Мои файлы тут.