1 #ifndef GL_MUTLI_COURBES_H_
2 #define GL_MUTLI_COURBES_H_
4 #include "envBilatMultiCourbes.h"
5 #include "MultiCourbeOptions.h"
6 #include "MultiCourbesMOO_A.h"
7 #include "Displayable_A.h"
9 #include "VertexBufferObject.h"
10 #include "ShaderLoaders.h"
12 //#include <boost/atomic.hpp>
15 #include "cuda_gl_interop.h" //link between GL and Cuda
19 /*----------------------------------------------------------------------*\
21 \*---------------------------------------------------------------------*/
23 /*--------------------------------------*\
25 \*-------------------------------------*/
36 * m nbPoints par courbes
38 * shaderPath la racine contenant les shader suivants :
40 * lib/ColorieurCarteHSB.glsl
41 * lib/ColorieurHSB.glsl
42 * multiCourbeHSBFragmentShader.glsl
43 * multiCourbeHSBFragmentShader.glsl
45 class CBI_MULTI_COURBES GLMutliCourbes
: public Displayable_A
47 /*--------------------------------------*\
49 \*-------------------------------------*/
56 * shaderPath la racine contenant les shader suivants :
58 * lib/ColorieurCarteHSB.glsl
59 * lib/ColorieurHSB.glsl
60 * multiCourbeHSBFragmentShader.glsl
61 * multiCourbeHSBFragmentShader.glsl
63 * Algorithme coloration:
65 * (A1) les courbes sont colorier en HSB, en fonction de y
66 * (A2) Si y est a l'interieur du sueil [sMin.sMax], la couleur utilisee sera la couleur "anatomique"
67 * (A3) minMax permet de calibrer le hue, ie de definier a quelle intensite y associer le hueMin et le hueMax
73 * Permet de sp�cifier [hMin,hMax]
77 * Permet de sp�cifier [sMin,sMax] (cf ci-dessus)
81 * Couleur RGBA qui sera afficher si y se trouve � l'interieur du seuil.
85 * Permet de specifier [vMin,vMax], de telle sorte que vMin soit colorier avec hMin, et vMax avec hMax
86 * Il s'agit d'une calibration.
88 GLMutliCourbes(MultiCourbesMOO_A
* ptrMultiCourbeMOO
, string shaderPath
);
90 /*--------------------------------------*\
92 \*-------------------------------------*/
96 virtual ~GLMutliCourbes();
98 /*--------------------------------------*\
100 \*-------------------------------------*/
107 virtual void init(Panel_A
&panel
);
112 virtual void reshape(Panel_A
&panel
, int w
, int h
);
117 virtual void display(Panel_A
&panel
);
122 virtual void release(Panel_A
&panel
);
125 * On next repaint, fillVBOValues will be called.
129 /*--------------------------------------*\
131 \*-------------------------------------*/
133 MultiCourbesMOO_A
* getMultiCoursbeMOO() const;
135 /*--------------------------------------*\
137 \*--------------------------------------*/
144 void drawMultiCourbes(Panel_A
&panel
);
145 void updateGL(Panel_A
&panel
);
150 MultiCourbesMOO_A
* ptrMultiCourbeMOO
;
154 VertexBufferObject
* ptrVBOVertices
;
155 VertexBufferObject
* ptrVBOValues
;
156 ShaderPrograms
* ptrShaderProgram
;
159 cudaGraphicsResource
* cudaRessource
;
160 cudaStream_t streamToSynchronize
;
163 std::atomic
<bool> isNeedUpdate
;
169 /*----------------------------------------------------------------------*\
171 \*---------------------------------------------------------------------*/