Files
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

44 lines
1.5 KiB
Batchfile

@echo off
rem ---------------------------------------------------------------------------
rem Builds qlclglwidget.dll natively on Windows with MSVC.
rem
rem Use this when the target Qt6 / libQt6Pas is an MSVC build (the official
rem Qt online-installer binaries are MSVC). A MinGW-built DLL cannot link
rem against MSVC Qt DLLs - the C++ ABIs are incompatible.
rem
rem How to run:
rem 1. Open "x64 Native Tools Command Prompt for VS" (vcvars64 environment).
rem 2. set QTDIR=C:\Qt\6.7.2\msvc2019_64 (your MSVC Qt kit)
rem 3. build-msvc.bat
rem
rem Output: ..\qlclglwidget.dll (put it next to the application executable).
rem ---------------------------------------------------------------------------
if "%QTDIR%"=="" (
echo error: set QTDIR to your MSVC Qt kit first, e.g.:
echo set QTDIR=C:\Qt\6.7.2\msvc2019_64
exit /b 1
)
if not exist "%QTDIR%\include\QtOpenGLWidgets" (
echo error: %QTDIR%\include\QtOpenGLWidgets not found - is QTDIR an MSVC Qt6 kit?
exit /b 1
)
cl /nologo /LD /EHsc /std:c++17 /permissive- /Zc:__cplusplus /MD /O2 ^
/I"%QTDIR%\include" ^
/I"%QTDIR%\include\QtCore" ^
/I"%QTDIR%\include\QtGui" ^
/I"%QTDIR%\include\QtWidgets" ^
/I"%QTDIR%\include\QtOpenGL" ^
/I"%QTDIR%\include\QtOpenGLWidgets" ^
qlclglwidget.cpp /Fe:..\qlclglwidget.dll ^
/link /LIBPATH:"%QTDIR%\lib" Qt6Widgets.lib Qt6OpenGLWidgets.lib Qt6Gui.lib Qt6Core.lib
if errorlevel 1 (
echo build FAILED
exit /b 1
)
del qlclglwidget.obj ..\qlclglwidget.exp ..\qlclglwidget.lib 2>nul
echo built ..\qlclglwidget.dll