WIP slint_maplibre_gl.cpp #36
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This pull request introduces a new OpenGL zero-copy rendering path for Slint integration, primarily targeting Windows, and scaffolds the necessary build system and code changes to enable and experiment with this feature. It adds new CMake options for controlling Slint's renderer features, updates platform-specific build logic, and implements a new C++ module for OpenGL integration. The example app is updated to allow runtime selection between CPU and OpenGL rendering paths via environment variables, and new documentation and formatting helper scripts are provided.
OpenGL Zero-Copy Rendering Integration:
src/slint_maplibre_gl.hpp
and corresponding implementation to provide a zero-copy OpenGL rendering pipeline for Slint, including aSlintZeroCopyGL
manager and a newSlintMapLibreGL
backend/controller. This enables efficient GPU-based map rendering with Slint on supported platforms.examples/main.cpp
to support runtime switching between CPU and OpenGL rendering paths using theMLNS_USE_GL
environment variable, with appropriate setup of Slint renderer backends and event wiring for both paths.Build System and Platform Support:
CMakeLists.txt
with new options (MLNS_WITH_SLINT_GL
,MLNS_FORCE_FETCH_SLINT
) to control OpenGL path and Slint fetching, and configured Slint renderer features (Skia/OpenGL) on Windows. Added logic to build and link the new OpenGL integration library when enabled. Improved platform-specific handling for OpenGL vs. GLES across Windows, macOS, and Linux. [1] [2] [3] [4]Developer Workflow and Documentation:
docs/build_guides/Windows_11.md
) to document new build flags, usage of the OpenGL path, and runtime environment variable for selecting the rendering backend. [1] [2] [3]AGENTS.md
and added a new helper scriptscripts/format-cpp.sh
for consistent code style, now excluding additional build directories. [1] [2]Todos
Screenshots
(If applicable, screenshots of the changes)