stb

Коллекция однофайловых библиотек для языков C/C++. Каждая библиотека представляет собой один заголовочный файл, который решает конкретную, часто востребованную задачу, от загрузки изображений до рендеринга вокселей. Благодаря своей простоте, лёгкости интеграции и кроссплатформенности, stb широко используется в игровой индустрии, графических приложениях и других проектах, где важна минимизация зависимостей.

Особенности

  • Каждая библиотека представляет собой один .h файл, что предельно упрощает интеграцию в проект;
  • Код доступен без лицензионных отчислений и может использоваться в любых целях, включая коммерческие;
  • API спроектирован интуитивно понятным и лёгким в освоении;
  • Каждая библиотека выполняет одну задачу и не имеет внешних зависимостей.

Основные компоненты

Проект stb состоит из множества независимых библиотек, каждая из которых решает конкретную задачу. Наиболее популярные из них перечислены ниже. (подробнее с документацией можно ознакомиться здесь).

Графика и обработка изображений

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

  • stb_image.h — загрузчик изображений. Основные функции:
    • stbi_load() — загрузка изображения из файла (поддерживает JPG, PNG, TGA, BMP, PSD, GIF, HDR, PIC);
    • stbi_load_from_memory() — загрузка изображения из буфера в памяти;
    • stbi_loadf() — загрузка HDR-изображений с плавающей точкой;
    • stbi_image_free() — освобождение памяти, выделенной под загруженное изображение.
  • stb_image_write.h — сохранение изображений. Основные функции:
    • stbi_write_png(), stbi_write_bmp(), stbi_write_tga(), stbi_write_jpg() — запись изображения в файл соответствующего формата;
  • stb_image_resize.h — масштабирование изображений. Основные функции:
    • stbir_resize_uint8(), stbir_resize_float() — изменение размеров изображения с хорошим качеством;
  • stb_truetype.h — растеризация шрифтов TrueType. Основные функции:
    • stbtt_BakeFontBitmap() — создание растрового атласа символов для последующего рендеринга текста;
    • stbtt_GetGlyphQuad() — получение геометрии глифа в виде квадратов для рендеринга в 3D-сценах.

Аудио

Эта категория включает библиотеки для работы со звуком.

  • stb_vorbis.c — декодер аудиоформата Ogg Vorbis. Основные функции:
    • stb_vorbis_open_filename() — открытие Vorbis-файла;
    • stb_vorbis_get_samples_short_interleaved() — декодирование аудио в 16-битный целочисленный буфер;
    • stb_vorbis_close() — закрытие файла и освобождение ресурсов.

Структуры данных и утилиты

  • stb_ds.h — типизированные динамические контейнеры для C. Основные макросы:
    • arrput() — добавление элемента в динамический массив;
    • shput() — вставка ключа и значения в хеш-таблицу;
    • hmdefault() — установка значения по умолчанию для хеш-таблицы;
  • stb_sprintf.h — быстрая реализация функций форматирования строк. Основные функции:
    • stbsp_sprintf(), stbsp_snprintf() — аналоги стандартных функций sprintf/snprintf, но с более высокой производительностью.

Разработка игр и пользовательские интерфейсы

  • stb_textedit.h — "движок" текстового редактора для встраивания в игровые поля ввода. Предоставляет логику обработки ввода, но не отрисовку;
  • stb_voxel_render.h — "движок" для рендеринга воксельных миров в стиле Minecraft с поддержкой освещения и текстур.

Механизм реализации

Важной особенностью stb является то, что по умолчанию заголовочный файл работает как обычный заголовок (только объявления). Для включения реализации конкретной библиотеки в проект необходимо определить специальный макрос ровно в одном .c или .cpp файле перед включением заголовка.

Пример для stb_image:

#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h"

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "stb/cci.20240531@aurora",
    )    

Процесс локальной сборки описан в документации.

stb

single-file public domain libraries for C/C++
Версия
Домашняя страница
Скачать
package
617.69 Kb
MD5: 89ac61b29fc30ae0142b1b325546bdd2
Updated: 03.09.2025, 21:29:10
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.