Райлиб - Raylib

Райлиб
официальный логотип raylib
Разработчики)Рамон Сантамария и участники
изначальный выпуск18 ноября 2013 г.; 7 лет назад (2013-11-18)
Стабильный выпуск
3.0.0 / 1 апреля 2020 г.; 7 месяцев назад (2020-04-01)
Репозиторийgithub.com/ rayan5/ raylib
Написано вC, конкретно C99
ПлатформаWindows, Linux, macOS, FreeBSD, Android, Raspberry Pi, HTML5
ТипAPI
Лицензияzlib Лицензия[1][2]
Интернет сайтwww.raylib.com

Райлиб (стилизовано в нижнем регистре как Райлиб) это кросс-платформенный Открытый исходный код разработка программного обеспечения библиотека. Библиотека предназначена для создания графических приложений и игр. Официальный сайт представляет ее как «простую и удобную в использовании библиотеку для программирования видеоигр». [3][4]

Библиотека очень вдохновлена Графическая библиотека Borland BGI и по Фреймворк XNA и он особенно хорошо подходит для создания прототипов, инструментов, графических приложений, встроенных систем и образования. Исходный код написан на простом C (C99 ) и в первую очередь предназначен для начинающих, распространяется под zlib / libpng OSI сертифицированная лицензия с открытым исходным кодом. Он поддерживает компиляцию для многих целевых платформ, включая Windows, GNU Linux, macOS, FreeBSD, Android, Raspberry Pi и HTML5.

raylib перенесен на более чем 40 языки программирования (но это нестабильные порты) в виде привязок, позволяющих пользователям получать доступ к функциям библиотеки на их любимом языке программирования.[5]

История

Разработка raylib началась в августе 2013 года Рамоном Сантамария в поддержку курса разработки игр, ориентированного на студентов, не имеющих опыта программирования и художественного профиля; библиотека выступила прямой заменой WinBGI. В ходе курса raylib был доработан на основе отзывов студентов, и к июню 2014 года библиотека начала демонстрироваться на нескольких мероприятиях по разработке игр в Барселоне.

raylib 1.0 был выпущен в ноябре 2013 года и содержал около 80 функций для управления окнами и входами, рисования основных форм, загрузки и рисования текстур, загрузки шрифтов, рисования текста, рисования основных трехмерных фигур, управления аудиосистемой и загрузки и воспроизведения аудиофайлов. Первая версия raylib прошла 8 итераций subversion (от raylib 1.1 до raylib 1.8), увеличивая версию за версией с добавлением новых модулей, новых платформ и новых функций в течение 5 лет. Некоторые из наиболее заметных улучшений были Android, WebAssembly и Raspberry Pi поддержка, несколько OpenGL бэкенды VR поддержка и десятки примеров для изучения и изучения.

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

raylib 3.0 был выпущен в апреле 2020 года с несколькими крупными внутренними изменениями для улучшения переносимости библиотеки и создания привязок. Некоторые из ключевых изменений raylib 3.0 заключались в перемещении глобальных переменных в контексты глобального состояния, поддержке настраиваемых распределителей памяти, централизованной файловой системе для загрузки данных в память и коллекции +115 примеров кода для изучения и изучения.

raylib продолжал расти и совершенствоваться в течение нескольких лет, добавляя множество функций, но всегда сохраняя свою основную ценность: это простая и легкая в использовании библиотека, позволяющая наслаждаться программированием.[6][7][8]

Функции

raylib имеет следующие функции:[9][10]

  • Поддержка многих платформ, включая Windows, Linux, macOS, Android и HTML5.
  • Поддержка для OpenGL 1.1, 2.1, 3.3 и OpenGL ES 2.0 как бэкэнд
  • Загрузка и отрисовка изображений, текстур и шрифтов из нескольких форматов
  • Загрузка и воспроизведение аудио из нескольких форматов и поддержка потоковой передачи
  • Математические операции для векторов, матриц и кватернионов
  • 2D-рендеринг с помощью камеры, включая автоматическое пакетирование спрайтов
  • Рендеринг 3D-моделей, включая пользовательские шейдеры и шейдеры постобработки
  • Поддержка для VR, в том числе настраиваемый HMD устройство параметры
  • Поддержка как анимированных, так и неанимированных 3D и 2D моделей
  • Коллекция больших примеров с +115 примеров кода

Прием и усыновление

raylib изначально предназначался для обучения видеоиграм и программированию графики, но из-за своей простоты и простоты использования он также был принят многими разработчиками игр-любителей.

Есть активные и растущие сообщества во многих сетях, таких как Reddit и Discord.[11]

GitHub перечисляет более 120 проектов по теме raylib.[12][13]

Архитектура программного обеспечения

Модули

архитектура raylib начиная с версии 3.0.0

raylib состоит из нескольких модулей, которые доступны программисту через API. Каждый модуль содержится в одном файле кода C, и некоторые модули могут использоваться в автономном режиме:

  • core - обрабатывает создание окна и OpenGL инициализация контекста, а также управление вводом (клавиатура, мышь, геймпад и сенсорный ввод)
  • rlgl - Ручки OpenGL backend, абстрагируя несколько версий от общего API. Этот модуль можно использовать как автономный.
  • shape - обрабатывает базовую визуализацию 2D-форм (линия, прямоугольник, круг ...) и базовое обнаружение столкновений.
  • текстуры - обрабатывает загрузку изображений и текстур (CPU и GPU) и управление, включая функции обработки изображений (кадрирование, масштаб, оттенок ...)
  • текст - обрабатывает загрузку шрифтов в виде таблицы спрайтов и рендеринга текста, также включает некоторые функции управления текстом (объединение, разделение, замена ...)
  • models - обрабатывает загрузку и рисование 3D-моделей, включая поддержку анимированных моделей.
  • raudio - обрабатывает управление аудиоустройствами, загрузку и воспроизведение аудиофайлов, включая поддержку потоковой передачи. Этот модуль можно использовать как автономный.
  • raymath - предоставляет набор математических функций для структур Vector2, Vector3, Quaternion и Matrix.

Привязки

у Райлиба языковые привязки для почти 50 различных языков программирования, предоставленных несколькими участниками. Некоторые из языков включают: Ржавчина, Идти, C # и Lua. Все привязки можно просмотреть в файле BINDINGS.md в репозитории GitHub библиотеки. Многие новые языки программирования, такие как Beef, Odin и Ring, обеспечивают привязку к raylib.

Язык программирования Ring включает raylib в стандартную библиотеку.[14][15]

Дополнения

Сообщество raylib внесло свой вклад в несколько надстроек raylib для расширения функций и связи raylib с другими библиотеками. Некоторые из модулей:

  • райгуи - Графический интерфейс немедленного режима модуль для простой разработки инструментов с использованием raylib[16]
  • Physac - физический модуль, предназначенный для использования с raylib[17]
  • libpartikel - модуль системы частиц для raylib[18]
  • spine-raylib - модуль интеграции анимации позвоночника для raylib[19]
  • cimgui-raylib - Уважаемый модуль интеграции Imgui для raylib[20]

Награды

В апреле 2019 года разработчик raylib был награжден премией Google Open Source Peer Bonus за вклад в экосистему с открытым исходным кодом с помощью raylib.[21]

В августе 2020 года Райлиб был награжден призом Epic MegaGrant от Эпические игры для поддержки разработки raylib. [22]

Примеры

Следующая программа в Язык программирования C использует raylib для создания белого окна с некоторым центрированным текстом.

#включают "raylib.h"int главный(пустота){    const int screenWidth = 800;    const int screenHeight = 450;    InitWindow(screenWidth, screenHeight, "пример raylib [core] - основное окно");    SetTargetFPS(60);    пока (!WindowShouldClose())    {        Начать рисование();            ClearBackground(РЭЙУАЙТ);            DrawText(«Поздравляю! Вы создали свое первое окно!», 190, 200, 20, СВЕТЛО-СЕРЫЙ);        EndDrawing();    }    Закрытое окно();    возвращаться 0;}

Смотрите также

Рекомендации

  1. ^ "Лицензия".
  2. ^ "raylib GitHub".
  3. ^ Томас (2019-08-01). «Лучшие движки для 2D-игр: полный список (2020)». Томас Жервро. Получено 2020-07-20.
  4. ^ «Игра-змейка, написанная на PHP (с Raylib)». thephp.website. Получено 2020-07-20.
  5. ^ "raysan5 / raylib". GitHub. Получено 2020-07-15.
  6. ^ «Релизы · райсан5 / райлиб». GitHub. Получено 2020-07-15.
  7. ^ "история raylib". raylib история github.
  8. ^ 262588213843476. "raylib: 6 лет веселья". Суть. Получено 2020-07-23.CS1 maint: числовые имена: список авторов (связь)
  9. ^ "raylib – Игровая библиотека C ++, идеально подходящая для начинающих". www.gamefromscratch.com. Получено 2020-07-20.
  10. ^ «Релиз Райлиб 2.5». www.gamefromscratch.com. Получено 2020-07-20.
  11. ^ "Присоединяйтесь к серверу Raylib Discord!". Раздор. Получено 2020-07-15.
  12. ^ «Создавайте программное обеспечение лучше вместе». GitHub. Получено 2020-07-15.
  13. ^ "raysan5 / raylib". GitHub. Получено 2020-07-15.
  14. ^ Программирование на начальном уровне - от новичка к профессионалу | Мансур Аюни | Apress.
  15. ^ «Разработка игр с использованием RingRayLib - документация Ring 1.13». ring-lang.sourceforge.net. Получено 2020-07-20.
  16. ^ Рэй (2020-07-15), raygui / raygui, получено 2020-07-15
  17. ^ Фисак, Виктор (14.07.2020), victorfisac / Physac, получено 2020-07-15
  18. ^ Бриманн, Дэвид Линус (2020-06-10), dbriemann / libpartikel, получено 2020-07-15
  19. ^ ВЕРЕМСОФТ (2020-06-27), WEREMSOFT / spine-raylib-время выполнения, получено 2020-07-15
  20. ^ ВЕРЕМСОФТ (2020-07-12), WEREMSOFT / c99-raylib-cimgui-template, получено 2020-07-15
  21. ^ "Победители равноправного бонуса Google Open Source уже здесь!". Блог Google с открытым исходным кодом. Получено 2020-07-15.
  22. ^ «RayLib получает грант Epic MegaGrant». GameFromScratch.com. 2020-08-07. Получено 2020-08-10.

внешняя ссылка