Files
lazopenglcontextex/lazopenglcontextex.lpk
ew8bakandClaude Fable 5 ac46e3d13a LazOpenGLContextEx: TOpenGLControl с Qt-бэкендом на QOpenGLWidget
Форк штатного пакета LazOpenGLContext (Lazarus components/opengl).
Qt5/Qt6-бэкенд (glqtnativecontext.pas) использует собственный контекст
настоящего QOpenGLWidget вместо ручного GLX на winId(): EGL на Wayland,
GLX на X11, WGL/CGL на Windows/macOS под ws=qt6.

QOpenGLWidget-наследник с paintGL-хуком живёт в маленькой C++-либе
csrc/qlclglwidget.cpp (QLCLOpenGLWidget из libQt6Pas — не QOpenGLWidget,
а голый QWidget под внешний GLX). Сборка: csrc/Makefile
(linux/macos/windows-кросс mingw-w64/windows-native MSYS2, install,
install-app) + build-msvc.bat для MSVC-Qt. Либа грузится в рантайме
рядом с бинарником приложения.

Бэкенды gtk2/gtk3/win32/cocoa скопированы из стока без изменений
(юниты переименованы с суффиксом Ex). Детали и нюансы — в README.md.

Проверено: EWSDR, спектр/водопад через GL в нативном Wayland (KDE, qt6),
живой эфир QO-100.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 15:00:26 +03:00

70 lines
2.4 KiB
ObjectPascal

<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<Package Version="4">
<Name Value="LazOpenGLContextEx"/>
<Type Value="RunAndDesignTime"/>
<AddToProjectUsesSection Value="True"/>
<Author Value="Mattias Gaertner (original), Vladimir (Qt native backend)"/>
<CompilerOptions>
<Version Value="11"/>
<SearchPaths>
<UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)/$(LCLWidgetType)"/>
</SearchPaths>
<Conditionals Value="if LCLWidgetType='cocoa' then begin
UsageLinkerOptions := ' -framework OpenGL'
+' ''-dylib_file'' ''/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib''';
end;"/>
</CompilerOptions>
<Description Value="Cross-platform OpenGL control. Fork of LazOpenGLContext with a Qt5/Qt6 backend on top of QOpenGLWidget: works on Wayland and with the Qt widgetset on Windows/macOS."/>
<License Value="modified LGPL-2"/>
<Version Release="1"/>
<Files Count="6">
<Item1>
<Filename Value="openglcontextex.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="OpenGLContextEx"/>
</Item1>
<Item2>
<Filename Value="glgtkglxcontextex.pas"/>
<AddToUsesPkgSection Value="False"/>
<UnitName Value="GLGtkGlxContextEx"/>
</Item2>
<Item3>
<Filename Value="glgtk3glxcontextex.pas"/>
<AddToUsesPkgSection Value="False"/>
<UnitName Value="GLGtk3GlxContextEx"/>
</Item3>
<Item4>
<Filename Value="glwin32wglcontextex.pas"/>
<AddToUsesPkgSection Value="False"/>
<UnitName Value="GLWin32WGLContextEx"/>
</Item4>
<Item5>
<Filename Value="glcocoanscontextex.pas"/>
<AddToUsesPkgSection Value="False"/>
<UnitName Value="GLCocoaNSContextEx"/>
</Item5>
<Item6>
<Filename Value="glqtnativecontext.pas"/>
<AddToUsesPkgSection Value="False"/>
<UnitName Value="GLQtNativeContext"/>
</Item6>
</Files>
<RequiredPkgs Count="2">
<Item1>
<PackageName Value="FCL"/>
<MinVersion Major="1" Valid="True"/>
</Item1>
<Item2>
<PackageName Value="LCL"/>
</Item2>
</RequiredPkgs>
<UsageOptions>
<UnitPath Value="$(PkgOutDir)"/>
</UsageOptions>
<PublishOptions>
<Version Value="2"/>
</PublishOptions>
</Package>
</CONFIG>