LINUX.ORG.RU

Прошу помощи в тесте сборки LDL на разных дистрах

 , ,


0

2

Привет, сообщество!

Приглашаю вас протестировать сборку LDL (Little Directmedia Layer) на ваших Linux-ПК.

Библиотека представляет собой графический API с поддержкой OpenGL 1.2 и 3.3, единый для всех систем — от старого железа до современных видеокарт.


🔧 Сборка

Установка зависимостей:

sudo apt-get install libx11-dev libgl1-mesa-dev
git clone https://github.com/JordanCpp/LDL.git
cd LDL
cmake -B build
cmake --build build

Примеры

В каталоге examples содержится множество демонстраций:

OpenGL 1.2 — квадрат, вращение, частицы, движение, ландшафт OpenGL 3.3 — треугольник с VAO/VBO, вращающийся куб с освещением

Буду благодарен, если вы запустите примеры и сообщите:

Нет ли крашей? Всё ли корректно работает? Какие у вас система и видеокарта?

Заранее спасибо за тестирование! Любые замечания и баг-репорты приветствуются.

📌 Ссылки

Скриншоты

Атом Ландшафт Пример



Последнее исправление: dataman (всего исправлений: 1)

Ерунда, но в процессе сборки выплюнулся ворнинг:

[ 37%] Building C object CMakeFiles/LDL.dir/source/LDL/OpenGL/GL4_4.c.o
[ 38%] Building C object CMakeFiles/LDL.dir/source/LDL/OpenGL/GL4_5.c.o
[ 40%] Building C object CMakeFiles/LDL.dir/source/LDL/OpenGL/GL4_6.c.o
[ 41%] Building C object CMakeFiles/LDL.dir/source/LDL/Linux/GLFuncs.c.o
[ 42%] Building C object CMakeFiles/LDL.dir/source/LDL/Linux/KMapper.c.o
[ 44%] Building C object CMakeFiles/LDL.dir/source/LDL/Linux/Library.c.o
[ 45%] Building C object CMakeFiles/LDL.dir/source/LDL/Linux/MainWin.c.o
/home/bfg/bin/git/LDL/source/LDL/Linux/MainWin.c: In function 'LDL_MainWindowPollEvents':
/home/bfg/bin/git/LDL/source/LDL/Linux/MainWin.c:143:17: warning: 'XKeycodeToKeysym' is deprecated [-Wdeprecated-declarations]
  143 |                 code = XKeycodeToKeysym(mainWindow->Display, event.xkey.keycode, 0);
      |                 ^~~~
In file included from /home/bfg/bin/git/LDL/source/LDL/Linux/GLX.h:18,
                 from /home/bfg/bin/git/LDL/source/LDL/Linux/MainWin.h:21,
                 from /home/bfg/bin/git/LDL/source/LDL/Linux/MainWin.c:16:
/usr/include/X11/Xlib.h:1683:15: note: declared here
 1683 | extern KeySym XKeycodeToKeysym(
      |               ^~~~~~~~~~~~~~~~
/home/bfg/bin/git/LDL/source/LDL/Linux/MainWin.c:152:17: warning: 'XKeycodeToKeysym' is deprecated [-Wdeprecated-declarations]
  152 |                 code = XKeycodeToKeysym(mainWindow->Display, event.xkey.keycode, 0);
      |                 ^~~~
/usr/include/X11/Xlib.h:1683:15: note: declared here
 1683 | extern KeySym XKeycodeToKeysym(
      |               ^~~~~~~~~~~~~~~~
[ 46%] Building C object CMakeFiles/LDL.dir/source/LDL/Linux/Ticks.c.o
[ 48%] Building C object CMakeFiles/LDL.dir/source/LDL/Linux/Window.c.o
[ 49%] Building C object CMakeFiles/LDL.dir/source/LDL/Linux/WinGL.c.o

Попробовал некоторые собранные примеры на opengl 1 и 3, вроде как всё ок. Система gentoo glibc, дрова mesa amdgpu.

Bfgeshka ★★★★★
()
Ответ на: комментарий от splinter

Нет, это я переписываю библиотеку с С++ на С89 для тотальной портабельности.

Раннее была новость на лоре. Первый выпуск мультимедийной библиотеки LDL c поддержкой старых систем

Но сейчас я пересмотрел концепцию. И буду выпускать версию, по готовности. 0.1,0.2 и т.д

Сейчас готово. Окна, события, клавиатура, мышь. Поддержка загрузчика OpenGL 1.0-4.6 из коробки. Пример на gl 1.2 и 3.3

Работает на Windows 95 и по 11 версию. Linux по идее должно собираться и на debian 3, но пока не проверял.

И главная идея, это иметь один API который может работать на всех ОС.

JordanCpp
() автор топика
Последнее исправление: JordanCpp (всего исправлений: 1)
[ 44%] Building C object CMakeFiles/LDL.dir/source/LDL/Linux/Library.c.o
[ 45%] Building C object CMakeFiles/LDL.dir/source/LDL/Linux/MainWin.c.o
/home/iron/apps/LDL/source/LDL/Linux/MainWin.c:143:24: warning: 'XKeycodeToKeysym' is deprecated [-Wdeprecated-declarations]
  143 |                 code = XKeycodeToKeysym(mainWindow->Display, event.xkey.keycode, 0);
      |                        ^
/usr/local/include/X11/Xlib.h:1682:1: note: 'XKeycodeToKeysym' has been explicitly marked deprecated here
 1682 | _X_DEPRECATED
      | ^
/usr/local/include/X11/Xfuncproto.h:136:40: note: expanded from macro '_X_DEPRECATED'
  136 | # define _X_DEPRECATED  __attribute__((deprecated))
      |                                        ^
/home/iron/apps/LDL/source/LDL/Linux/MainWin.c:152:24: warning: 'XKeycodeToKeysym' is deprecated [-Wdeprecated-declarations]
  152 |                 code = XKeycodeToKeysym(mainWindow->Display, event.xkey.keycode, 0);
      |                        ^
/usr/local/include/X11/Xlib.h:1682:1: note: 'XKeycodeToKeysym' has been explicitly marked deprecated here
 1682 | _X_DEPRECATED
      | ^
/usr/local/include/X11/Xfuncproto.h:136:40: note: expanded from macro '_X_DEPRECATED'
  136 | # define _X_DEPRECATED  __attribute__((deprecated))
      |                                        ^
2 warnings generated.
[ 46%] Building C object CMakeFiles/LDL.dir/source/LDL/Linux/Ticks.c.o
[ 48%] Building C object CMakeFiles/LDL.dir/source/LDL/Linux/Window.c.o
/home/iron/apps/LDL/source/LDL/Linux/Window.c:128:1: warning: non-void function does not return a value in all control paths [-Wreturn-type]
  128 | }
      | ^
1 warning generated.
[ 49%] Building C object CMakeFiles/LDL.dir/source/LDL/Linux/WinGL.c.o
[ 50%] Linking C static library libLDL.a
[ 50%] Built target LDL
[ 51%] Building C object examples/OpenGL1/CMakeFiles/OpenGL1_Rect.dir/OpenGL1_Rect.c.o
[ 53%] Linking C executable OpenGL1_Rect
ld: error: unable to find library -lX11
ld: error: unable to find library -lGL
cc: error: linker command failed with exit code 1 (use -v to see invocation)
*** Error code 1

Stop.
make[2]: stopped making "examples/OpenGL1/CMakeFiles/OpenGL1_Rect.dir/build" in /usr/home/iron/apps/LDL/build
*** Error code 1

Stop.
make[1]: stopped making "all" in /usr/home/iron/apps/LDL/build
*** Error code 1

Stop.
make: stopped making "default_target" in /usr/home/iron/apps/LDL/build
$ cc -v
FreeBSD clang version 19.1.7 (https://github.com/llvm/llvm-project.git llvmorg-19.1.7-0-gcd708029e0b2)
Target: x86_64-unknown-freebsd15.1
Thread model: posix
InstalledDir: /usr/bin

$ ls -la /usr/local/lib/libX11.so
lrwxr-xr-x  1 root wheel 15 27 апр.  20:56 /usr/local/lib/libX11.so -> libX11.so.6.4.0

$ ls -la /usr/local/lib/libGL.so
lrwxr-xr-x  1 root wheel 10  5 янв.  01:39 /usr/local/lib/libGL.so -> libGL.so.1
iron ★★★★★
()
Ответ на: комментарий от Bfgeshka

Знакомая штука. историю этого варнинга читать тут. Если кратко: нубы не осилили пофиксить тупой баг в XKeycodeToKeysym и вместо этого вписали в ман объявление о том что он устарел. Но спустя 9 лет этот баг заметил я, разумеется сразу исправил и сообщил им об этом, а ещё спустя 3 года они таки (при помощи ещё одного стороннего юзера) внесли этот фикс в libx11, так что функция работает теперь правильно.

Убирать вызов этой функции из исходника, особенно с учётом заявки на всеобщую совместимость, нельзя. Xkb-шная ей альтернатива, несмотря на то что в современных системах обычно доступна, всё ещё опциональна по спецификации протокола, и на каких-то системах её может просто не быть в рабочем виде.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от firkax

Спасибо за информацию. Исправил варнинг так.

static KeySym LDL_GetKeySym(Display* display, KeyCode keycode)
{
#if defined(XlibSpecificationRelease) && XlibSpecificationRelease >= 6
    return XkbKeycodeToKeysym(display, keycode, 0, 0);
#else
    return XKeycodeToKeysym(display, keycode, 0);
#endif
}
JordanCpp
() автор топика
slackware-15+

Linux darkstar.local 6.18.21 #1 SMP PREEMPT_DYNAMIC Thu Apr  2 18:05:00 CDT 2026 x86_64 Intel(R) Core(TM)2 Duo CPU     T7300  @ 2.00GHz GenuineIntel GNU/Linux

00:02.0 VGA compatible controller: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (primary) (rev 03)

server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
    GLX_ARB_context_flush_control, GLX_ARB_create_context, 
    GLX_ARB_create_context_no_error, GLX_ARB_create_context_profile, 
    GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float, 
    GLX_ARB_framebuffer_sRGB, GLX_ARB_multisample, 
    GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile, 
    GLX_EXT_fbconfig_packed_float, GLX_EXT_framebuffer_sRGB, 
    GLX_EXT_get_drawable_type, GLX_EXT_libglvnd, GLX_EXT_no_config_context, 
    GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating, 
    GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, GLX_OML_swap_method, 
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, 
    GLX_SGIX_visual_select_group, GLX_SGI_make_current_read, 
    GLX_SGI_swap_control
  • OpenGL1_FirstPersonMaze - там w - назад, s - вперед, специально сделали или перепутали?
  • OpenGL1_SolarSystem - а где Плутон? :-)
  • OpenGL1_TargetShooter - чувствительность мыши очень высокая.

для OpenGL3 естественно: ``` hader error: 0:1(10): error: GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, and 1.00 ES

OpenGL1 всё запукается и работает.

splinter ★★★★★
()
Ответ на: комментарий от splinter

Спасибо.

Я добавлю примеры для gl 2.1 Что бы больше обхватить видеокарт.

Здорово, LDL работает на железе +-2007 года.

JordanCpp
() автор топика
Ответ на: комментарий от iron

Спасибо.

Добавил фикс в cmake. Теперь будет собираться без костылей.

if(CMAKE_SYSTEM_NAME MATCHES «BSD») list(APPEND CMAKE_PREFIX_PATH «/usr/local») endif()

JordanCpp
() автор топика
Ответ на: комментарий от splinter

OpenGL1_FirstPersonMaze - там w - назад, s - вперед, специально сделали или перепутали? OpenGL1_SolarSystem - а где Плутон? :-) OpenGL1_TargetShooter - чувствительность мыши очень высокая.

Исправлю примеры. Кстати Плутон в 2006 исключили из списка планет:)) Но добавлю, я же поддерживаю легаси.

JordanCpp
() автор топика
Ответ на: комментарий от Overlabor5491

Немного не по теме, но спрошу. Когда ждать финальную версию ArcanumWorld(переписанный движок Arcanum)?

Не скоро. Сейчас уже есть движок с открытым исходным кодом Arcanum CE. Собирается под основные системы.

Были мысли, когда LDL будет более зрелая, заменить используемый SDL на LDL.

JordanCpp
() автор топика

Всем спасибо за тесты. Готовлю первый публичный релиз 0.1

Обновил редми, скриншоты добавил и описание.

Надо было сделать так раньше, ох как я жалею. Что столько времени возился и хотел реализовать все сразу.

Сейчас релизы будут итеративно по готовности.

0.x это новая фича 0.x.x исправление накопившихся багов

JordanCpp
() автор топика
Последнее исправление: JordanCpp (всего исправлений: 1)
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария