KXL. Библиотека для разработки игр под linux

В процессе разработки собственного проекта неоднократно приходила мысль о простом средстве визуализации. Дело в том, что «прикручивать» полновесный графический движок для рисования двух-трех графиков — это стрелять из пушки по воробьям. Тем не менее, даже для простых задач приходится вникать в принципы отрисовки окон в ОС и формировать сравнительно массивную обвязку. Хотелось бы получить нечто простое и с возможностью обработки событий клавиатуры, например. Вот тут то я и наткнулся на библиотеку KXL.

Fractal KXL C linux

Обзор

В поисках простого решения своей задачи, стал просматривать содержимое репозиториев своего дистрибутива linux. Наткнулся на библиотеку с интригующим описанием: «multimedia library for game development«. Это была libkxl0 (libkxl0-dev для разработки). Почитав мануал, выяснил что библиотека позволяет:

  • рисовать по точкам и с использованием «примитивов»;
  • загружать, масштабировать и отображать BMP изображения и их фрагменты (16 или 256 цветов);
  • отображать текст заданного шрифта, размера и цвета;
  • обрабатывать события клавиатуры и мыши;
  • воспроизводить WAV с дискретизацией 8000 Hz;
  • устанавливать таймер с количеством срабатываний в секунду.

Перечисленного вполне достаточно для написания всяких тетрисов, платформеров и прочих легковесных игр. Заглянем в мануал.

Функции

Что несказанно порадовало, так это документация. Всё крайне просто и понятно. Есть пример буквально к каждой функции. Чтобы нарисовать окно достаточно вызвать одну функцию:

KXL_CreateWindow(100, 100, "Sample",
KXL_EVENT_EXPOSURE_MASK |
KXL_EVENT_KEY_PRESS);

Здесь окно будет иметь заголовок Sample, обрабатывать события клавиатуры и разворачивания окна (для перерисовки содержимого).

О проекте

Это простая демонстрация работы с библиотекой на примере рисования фрактала. В конкретном алгоритме использовано соотношение

z = z^4 + c

вместо

z = z^2 + c

Если интересен алгоритм, рекомендую почитать статью.

Исходники

А вот и сам исходник. Если есть предложения и замечания — пишем в комментариях к статье.

130

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

Ваш e-mail не будет опубликован.