Code_TYMPAN  4.4.0
Industrial site acoustic simulation
OGLShaderManager.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) <2012-2024> <EDF-DTG> <FRANCE>
3  * This file is part of Code_TYMPAN (R).
4  * Code_TYMPAN (R) is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  * Code_TYMPAN (R) is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11  * See the GNU General Public License for more details.
12  * You should have received a copy of the GNU General Public License along
13  * with Code_TYMPAN (R). If not, see <https://www.gnu.org/licenses/>.
14  */
15 
17 #include <qopenglcontext.h>
18 #include <qopenglshaderprogram.h>
19 #include <QFile>
20 
21 QMap<QOpenGLContextGroup*, OGLShaderManager*> OGLShaderManager::instances;
22 
24 {
25  QOpenGLContextGroup* group = context->shareGroup();
26 
27  if (!instances.contains(group))
28  {
29  instances[group] = new OGLShaderManager(context);
30  }
31 
32  return instances[group];
33 }
34 
35 QOpenGLShaderProgram* OGLShaderManager::getShaderProgram(ShaderId shader)
36 {
37  switch (shader)
38  {
39  case SimpleShader:
40  return &simpleShader;
41  }
42 
43  assert(false && "Should never be reachable");
44 }
45 
46 OGLShaderManager::OGLShaderManager(QOpenGLContext* context)
47 {
49 }
50 
52 {
53  // Simple shader
54  simpleShader.addCacheableShaderFromSourceFile(QOpenGLShader::Vertex, ":/shaders/simple.vert");
55  simpleShader.addCacheableShaderFromSourceFile(QOpenGLShader::Fragment, ":/shaders/simple.frag");
56  simpleShader.link();
57 }
classe permettant d'accède a des shaders
static QMap< QOpenGLContextGroup *, OGLShaderManager * > instances
static OGLShaderManager * instance(QOpenGLContext *context)
QOpenGLShaderProgram simpleShader
QOpenGLShaderProgram * getShaderProgram(ShaderId shaderId)
OGLShaderManager(QOpenGLContext *context)