Migrate the build system to cmake

This commit is contained in:
Luis Ángel San Martín Rodríguez
2026-02-25 09:19:39 +01:00
parent 5f8951ac09
commit 865020fe11
63 changed files with 1859 additions and 2060 deletions

View File

@ -27,7 +27,7 @@ QRhiWidget (Qt base class)
- **yacreader_flow_rhi.h** - Header with class definitions
- **yacreader_flow_rhi.cpp** - Implementation
- **shaders/** - GLSL 450 shaders and compiled .qsb files
- **shaders/** - GLSL 450 shader source files (compiled to .qsb at build time by `qt_add_shaders`)
- **README.md** - This file
## Key Features
@ -52,7 +52,8 @@ QRhi resources managed:
### Shader System
Shaders are written in **GLSL 4.50** and compiled to `.qsb` format supporting:
Shaders are written in **GLSL 4.50** and compiled to `.qsb` format at build time
via `qt_add_shaders()` in CMake, supporting:
- OpenGL ES 2.0, 3.0
- OpenGL 2.1, 3.0+
- HLSL (Direct3D 11/12)
@ -134,36 +135,20 @@ All public methods from `YACReaderFlowGL` are preserved:
### Prerequisites
1. **Qt 6.7 or later**
2. **qsb tool** (Qt Shader Baker) in PATH
3. **C++17 compiler**
### Compile Shaders
Before building YACReader, compile the shaders:
```bash
cd common/rhi/shaders
# Windows
compile_shaders.bat
# Unix/macOS
chmod +x compile_shaders.sh
./compile_shaders.sh
```
This generates `flow.vert.qsb` and `flow.frag.qsb` which are embedded via `shaders.qrc`.
1. **Qt 6.7 or later** (with ShaderTools module)
2. **CMake 3.25+**
3. **C++20 compiler**
### Build YACReader
The `.pro` files automatically include RHI sources for Qt 6.7+:
Shaders are compiled automatically at build time via `qt_add_shaders()`:
```bash
qmake YACReader.pro
make
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
```
For Qt 5 builds, the OpenGL version is used automatically.
No manual shader compilation step is needed.
## Graphics API Selection
@ -224,7 +209,7 @@ qDebug() << "Driver:" << rhi->driverInfo();
### Common Issues
**Problem**: Shaders fail to load
**Solution**: Ensure `.qsb` files are compiled and included in resources
**Solution**: Ensure Qt ShaderTools module is installed and `qt_add_shaders()` ran during build
**Problem**: Black screen on Qt 6.7
**Solution**: Check if `YACREADER_USE_RHI` is defined in build
@ -260,7 +245,7 @@ The RHI version is a **drop-in replacement** requiring no application code chang
1. **Qt Version**: Requires Qt 6.7+ (released April 2024)
2. **QRhi Stability**: QRhi APIs may change in minor Qt releases
3. **Mixed Renderers**: Only one graphics API per window
4. **Shader Compilation**: Must recompile shaders when modifying source
4. **Shader Compilation**: Shaders are recompiled automatically when source files change
## Future Improvements

View File

@ -1,49 +0,0 @@
# YACReader Flow RHI Shaders
This directory contains the GLSL 4.50 shaders for the QRhiWidget-based flow implementation.
## Files
- `flow.vert` - Vertex shader (GLSL 450)
- `flow.frag` - Fragment shader (GLSL 450)
- `flow.vert.qsb` - Compiled vertex shader (multi-platform)
- `flow.frag.qsb` - Compiled fragment shader (multi-platform)
- `compile_shaders.bat` - Windows compilation script
- `compile_shaders.sh` - Unix/macOS compilation script
- `shaders.qrc` - Qt resource file
## Compiling Shaders
The shaders must be compiled to `.qsb` format using Qt's `qsb` tool before building YACReader.
### Prerequisites
Ensure `qsb` is in your PATH. It's typically located in:
- Windows: `C:\Qt\6.x.x\msvc2019_64\bin\qsb.exe`
- macOS: `/opt/Qt/6.x.x/macos/bin/qsb`
- Linux: `/opt/Qt/6.x.x/gcc_64/bin/qsb`
### Compilation
**Windows:**
```cmd
cd common/rhi/shaders
compile_shaders.bat
```
**Unix/macOS:**
```bash
cd common/rhi/shaders
chmod +x compile_shaders.sh
./compile_shaders.sh
```
The compiled `.qsb` files contain shader variants for:
- OpenGL ES 2.0, 3.0
- OpenGL 2.1, 3.0+
- HLSL (Direct3D 11/12)
- Metal Shading Language (macOS/iOS)
## Note
The `.qsb` files are included in the repository for convenience. Recompile only if you modify the shader source.

View File

@ -1,19 +0,0 @@
@echo off
REM Compile shaders to .qsb format for Qt RHI
REM Requires qsb tool from Qt installation
echo Compiling flow vertex shader...
qsb --glsl "100 es,120,150" --hlsl 50 --msl 12 -o flow.vert.qsb flow.vert
if %ERRORLEVEL% NEQ 0 (
echo Error compiling vertex shader
exit /b 1
)
echo Compiling flow fragment shader...
qsb --glsl "100 es,120,150" --hlsl 50 --msl 12 -o flow.frag.qsb flow.frag
if %ERRORLEVEL% NEQ 0 (
echo Error compiling fragment shader
exit /b 1
)
echo Shader compilation complete!

View File

@ -1,19 +0,0 @@
#!/bin/bash
# Compile shaders to .qsb format for Qt RHI
# Requires qsb tool from Qt installation
echo "Compiling flow vertex shader..."
qsb --glsl "100 es,120,150" --hlsl 50 --msl 12 -o flow.vert.qsb flow.vert
if [ $? -ne 0 ]; then
echo "Error compiling vertex shader"
exit 1
fi
echo "Compiling flow fragment shader..."
qsb --glsl "100 es,120,150" --hlsl 50 --msl 12 -o flow.frag.qsb flow.frag
if [ $? -ne 0 ]; then
echo "Error compiling fragment shader"
exit 1
fi
echo "Shader compilation complete!"

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +0,0 @@
<RCC>
<qresource prefix="/shaders">
<file>flow.vert.qsb</file>
<file>flow.frag.qsb</file>
</qresource>
</RCC>