Окно и текст внутри на SDL

Прежде всего установите в вашей системе библиотеку 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

Кроме того, обратите внимание, что для корректной работы необходимо поместить файл со шрифтом в папку с бинарником.
У меня получилось вот так:

На этом пока всё. Спасибо за внимание. Мои файлы тут.

Просмотров:   2335

Комментарии

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

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Введи эти символы. Ато роботы одолели!