1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/vsf-linux-sdl12-compat

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Simple DirectMedia Layer (SDL) sdl12-compat

https://www.libsdl.org/

Это Simple DirectMedia Layer, общий API, который предоставляет низкоуровневый доступ к аудио, клавиатуре, мыши, джойстику, 3D-оборудованию через OpenGL и 2D-фреймбуферу на разных платформах.

Этот код является слоем совместимости; он предоставляет двоичный и исходный совместимый API для программ, написанных с использованием SDL 1.2, но за кулисами использует SDL 2.0. Если вы пишете новый код, пожалуйста, ориентируйтесь непосредственно на SDL 2.0 и не используйте этот слой.

Если вам абсолютно необходим настоящий SDL 1.2 («SDL 1.2 Classic»), пожалуйста, используйте исходное дерево по адресу https://github.com/libsdl-org/SDL-1.2, которое иногда получает исправления ошибок, но без официального выпуска. Но мы настоятельно рекомендуем вам этого не делать.

Как использовать:

— Соберите библиотеку. Для этого потребуется доступ к заголовкам SDL2 (v2.0.7 или новее), CMake и инструментам сборки по вашему выбору. После сборки у вас будет замена, которую можно использовать с любым существующим двоичным файлом, основанным на SDL 1.2. Вы можете скопировать эту библиотеку поверх существующей сборки 1.2 или заставить её иметь приоритет над системной копией с помощью LD_LIBRARY_PATH и т. д. Во время выполнения sdl12-compat должен иметь возможность найти копию SDL2 (версии v2.0.7 или более поздней — v2.0.12 или более поздней для Windows), поэтому при необходимости включите её в библиотеку.

— Если вы хотите собрать программу SDL 1.2 из исходного кода, мы включили заголовки совместимости, чтобы sdl12-compat мог полностью заменить SDL 1.2 во всех точках. Эти заголовки представляют собой только необходимый минимум для совместимости на уровне исходного кода и вообще не имеют документации или каких-либо дополнительных функций. Новые заголовки также распространяются под лицензией zlib. Обратите внимание, что сам sdl12-compat эти заголовки не использует, поэтому если вам нужна только библиотека, они вам не нужны.

Сборка библиотеки:

Эти инструкции являются кратким руководством; здесь нет ничего необычного, если вы привыкли использовать CMake.

Вам нужно будет использовать CMake для сборки sdl12-compat. Скачайте его с сайта cmake.org или установите из менеджера пакетов (sudo apt-get install cmake в Ubuntu и т.д.).

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

Для сборки sdl12-compat вам понадобится копия SDL 2.0.x, потому что нам нужны заголовки SDL2. Вы можете собрать его из исходного кода или установить из менеджера пакетов. Пользователи Windows и Mac могут загрузить готовые двоичные файлы со страницы загрузки SDL (https://libsdl.org/download-2.0.php); убедитесь, что вы получаете «разрабатываемые библиотеки», а не «бинарные файлы для выполнения».

Пользователям Linux могут потребоваться некоторые пакеты из их дистрибутива Linux. В Ubuntu вам может потребоваться выполнить:

sudo apt-get install build-essential cmake libsdl2-2.0-0 libsdl2-dev libgl-dev

Теперь просто укажите CMake на каталог sdl12-compat. Вот пример командной строки:

cd sdl12-compat
cmake -Bbuild -DCMAKE_BUILD_TYPE=Release .
cmake --build build

Пользователи Windows или macOS могут предпочесть использовать графический интерфейс CMake, но идея та же: дайте ему каталог, где находится sdl12-compat, нажмите «Настроить», выберите свой любимый компилятор, затем нажмите «Сгенерировать». Теперь у вас есть файлы проекта! Нажмите «Открыть проект», чтобы запустить свою среду разработки. Затем вы можете построить всё, что захотите, с помощью Visual Studio, Xcode и т. д.

При необходимости вам, возможно, придётся указать расположение заголовков SDL2 при использовании CMake. sdl12-compat не нуждается в библиотеке SDL2 для сборки, только в его заголовках (хотя он может жаловаться на отсутствующую библиотеку, вы можете проигнорировать это). Из командной строки добавьте -DSDL2_INCLUDE_DIR=/path/to/SDL2/include, или найдите это в графическом интерфейсе CMake и установите соответствующим образом, снова нажмите «Настроить» и затем «Сгенерировать».

Когда сборка будет завершена, у вас будет общая библиотека, которую вы сможете использовать вместо существующей сборки SDL 1.2. Это также создаст оригинальные тестовые приложения SDL 1.2, так что вы сможете проверить работоспособность библиотеки.

Создание для старых архитектур ЦП в Linux:

Существует множество двоичных файлов многолетней давности, которые использовали SDL 1.2, то есть... Они предназначены для архитектур процессоров, которые, вероятно, не используются в вашей текущей системе.

Если вы хотите собрать 32-битную библиотеку x86 на компьютере с архитектурой x86-64 Linux для совместимости со старыми играми, вам следует установить некоторые базовые 32-битные библиотеки разработки для вашего дистрибутива. В Ubuntu это будет выглядеть так:

sudo apt-get install gcc-multilib libsdl2-dev:i386

...а затем добавьте -m32 к параметрам сборки:

cd sdl12-compat
cmake -Bbuild32 -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS=-m32
cmake --build build32

Сборка для старых архитектур ЦП на macOS:

Пользователи macOS могут попробовать добавить -DCMAKE_OSX_ARCHITECTURES='arm64;x86_64' вместо -DCMAKE_C_FLAGS=-m32, чтобы создать универсальный двоичный файл для 64-битных машин Intel и Apple Silicon. Если у вас более старая (или гораздо более старая!) версия Xcode, вы можете попытаться собрать с «i386» или, возможно, даже «powerpc» для 32-битных систем Intel или PowerPC, но Xcode (и сама macOS) уже довольно давно не поддерживает ни то, ни другое, и вы, скорее всего, столкнётесь с небольшими трудностями при компиляции SDL2 здесь... но приложив некоторые усилия, возможно запустить SDL2 и sdl12-compat на заброшенных архитектурах Apple.

Сборка для старых архитектур ЦП в Windows:

Пользователи Windows просто выбирают 32-разрядную версию Visual Studio при запуске CMake, когда он спрашивает вас, на какой компилятор ориентироваться в графическом интерфейсе CMake.

Параметры конфигурации:

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

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

SDL12COMPAT_HIGHDPI=1 SDL12COMPAT_OPENGL_SCALING=0 %command%

запустит %command% с поддержкой мониторов высокого разрешения, но отключённой поддержкой масштабирования OpenGL.

Доступные параметры:

  • SDL12COMPAT_DEBUG_LOGGING: Если включено, выводит отладочные сообщения в stderr. Эти сообщения в основном полезны разработчикам или при попытке отследить конкретную ошибку.

  • SDL12COMPAT_FAKE_CDROM_PATH: Путь к каталогу, содержащему MP3-файлы (с именами trackXX.mp3, где XX — двузначный номер дорожки), которые будут использоваться приложениями, воспроизводящими аудио компакт-дисков. Рекомендуется использовать абсолютный путь: относительные пути могут работать некорректно.

  • SDL12COMPAT_OPENGL_SCALING: Включает масштабирование приложений OpenGL до текущего разрешения рабочего стола. Если отключено, приложения могут изменить реальное разрешение экрана. Этот параметр включён по умолчанию, но не все приложения совместимы с ним: попробуйте изменить его, если вы видите только чёрный экран.

  • SDL12COMPAT_FIX_BORDERLESS_FS_WIN: Позволяет превратить окна без полей на рабочем столе в полноэкранные окна (чтобы они переходили в отдельное пространство на macOS и правильно скрывали окна док-станции в других настольных средах и т. д.). Если отключено, приложения могут не получить весь экран, как они ожидают. Этот параметр включен по умолчанию, но этот параметр здесь, чтобы его можно было отключить вручную, если это вызовет какой-то отрицательный результат, который мы не предусмотрели.

  • SDL12COMPAT_SCALE_METHOD: Выберите метод масштабирования, используемый, когда приложения рендерятся с нестандартным разрешением. Варианты: nearest для ближайшего соседа (более пикселизированный) и linear для билинейного отбора (более размытый).

  • SDL12COMPAT_HIGHDPI: Сообщает приложению о поддержке дисплеев с высоким DPI. Включение этого обычно приводит к более чёткой графике, но в некоторых приложениях текст и другие элементы могут стать очень маленькими.

  • SDL12COMPAT_SYNC_TO_VBLANK: Принудительно синхронизирует (или не синхронизирует) приложение с интервалом вертикального гашения (VSync). При включении это ограничивает частоту кадров приложения частотой обновления экрана (и может решить проблемы с разрывом экрана).

  • SDL12COMPAT_USE_KEYBOARD_LAYOUT: Заставляет все клавиатурные вводы учитывать текущую раскладку клавиатуры. Это может потребоваться отключить для приложений, предоставляющих собственную раскладку клавиатуры. Поддержка раскладки или если расположение клавиш на клавиатуре важнее, чем символы, которые они производят. Обратите внимание, что ввод текста (в большинстве приложений) будет учитывать раскладку клавиатуры независимо от этой опции.

  • SDL_MOUSE_RELATIVE_SCALING: Если включено, относительное движение мыши масштабируется, когда приложение работает в неродном разрешении. Это может потребоваться для некоторых приложений, использующих собственные курсоры мыши. См. также: https://wiki.libsdl.org/SDL_HINT_MOUSE_RELATIVE_SCALING

Проблемы совместимости с масштабированием OpenGL

Функция масштабирования OpenGL в sdl12-compat позволяет приложениям, желающим работать с неродным разрешением экрана, делать это без изменения системного разрешения. Это достигается путём перенаправления вызовов рендеринга OpenGL на «поддельный» задний буфер, который масштабируется при рендеринге.

Это хорошо работает для простых приложений, но для более сложных приложений, использующих объекты кадрового буфера, sdl12-compat должен перехватывать и перенаправлять некоторые вызовы OpenGL. Приложения, обращающиеся к этим функциям без использования SDL (даже через библиотеку), могут не отображать ничего или отображать неправильно, если включено масштабирование OpenGL.

В этих случаях вы можете отключить масштабирование OpenGL, установив переменную среды:

SDL12COMPAT_OPENGL_SCALING=0

Проблемы совместимости с приложениями, напрямую обращающимися к базовым API

Некоторые приложения сочетают использование SDL с прямым доступом к базовой ОС или оконной системе. При запуске этих приложений в одной и той же ОС и видеодрайвере SDL (например, программа, написанная для X11 в Linux, запускается на X11 в Linux) sdl12-compat обычно совместим.

Однако, если вы хотите запустить приложение на другом видеодрайвере, приложение не сможет получить доступ к ожидаемому базовому API и может дать сбой. Это часто происходит при попытке запуска приложений, написанных для X11 под Wayland, и особенно затрагивает ряд популярных загрузчиков расширений OpenGL.

В этом случае лучшим решением является запуск под слоем совместимости, таким как XWayland, и установка переменной среды SDL_VIDEODRIVER на драйвер, который ожидает программа:

SDL_VIDEODRIVER=x11

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

This is the Simple DirectMedia Layer, a general API that provides low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D framebuffer across multiple platforms. Развернуть Свернуть
C и 5 других языков
Zlib
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/vsf-linux-sdl12-compat.git
git@gitlife.ru:oschina-mirror/vsf-linux-sdl12-compat.git
oschina-mirror
vsf-linux-sdl12-compat
vsf-linux-sdl12-compat
main