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

Обзор
В поисках простого решения своей задачи, стал просматривать содержимое репозиториев своего дистрибутива 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, обрабатывать события клавиатуры и разворачивания окна (для перерисовки содержимого).
О проекте
Это простая демонстрация работы с библиотекой на примере рисования фрактала. В конкретном алгоритме использовано соотношение
вместо
Если интересен алгоритм, рекомендую почитать статью.
Исходники
А вот и сам исходник. Если есть предложения и замечания — пишем в комментариях к статье.
Добавить комментарий