File indexing completed on 2024-05-05 16:16:43

0001 /*
0002  * This file is part of KQuickCharts
0003  * SPDX-FileCopyrightText: 2019 Arjen Hiemstra <ahiemstra@heimr.nl>
0004  *
0005  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0006  */
0007 
0008 #include "SDFShader.h"
0009 
0010 #include <QOpenGLContext>
0011 #include <QSurfaceFormat>
0012 
0013 static const char shaderRoot[] = ":/org.kde.quickcharts/";
0014 
0015 SDFShader::SDFShader()
0016 {
0017 }
0018 
0019 SDFShader::~SDFShader()
0020 {
0021 }
0022 
0023 void SDFShader::setShaders(const QString &vertex, const QString &fragment)
0024 {
0025 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
0026     auto header = QStringLiteral("header_desktop.glsl");
0027     auto format = QOpenGLContext::currentContext()->format();
0028     if (format.renderableType() == QSurfaceFormat::OpenGLES) {
0029         header = QStringLiteral("header_es2.glsl");
0030     }
0031 
0032     setShaderSourceFiles(QOpenGLShader::Vertex, {QString::fromLatin1(shaderRoot) + header, QString::fromLatin1(shaderRoot) + vertex});
0033 
0034     setShaderSourceFiles(QOpenGLShader::Fragment,
0035                          {QString::fromLatin1(shaderRoot) + header, //
0036                           QString::fromLatin1(shaderRoot) + QStringLiteral("sdf.glsl"), //
0037                           QString::fromLatin1(shaderRoot) + fragment});
0038 #else
0039     setShaderFileName(QSGMaterialShader::VertexStage, QLatin1String(shaderRoot) + vertex + QLatin1String(".qsb"));
0040     setShaderFileName(QSGMaterialShader::FragmentStage, QLatin1String(shaderRoot) + fragment + QLatin1String(".qsb"));
0041 #endif
0042 }