X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;f=WCudaMSE%2FStudent_Cuda_Image%2Fsrc%2Fcpp%2Fcore%2F02_Mandelbrot_Julia%2Fmoo%2Fhost%2FFractal.h;h=41813e2524ad957574586213331281ef7f0fd160;hb=fd0031be0a39a5d902750affaff6322fcd5229b1;hp=d9b884196d85871c228a6af3d74d361a3012fb77;hpb=bd178531f80f8bc41c998d1c4588f9e18cc29389;p=GPU.git diff --git a/WCudaMSE/Student_Cuda_Image/src/cpp/core/02_Mandelbrot_Julia/moo/host/Fractal.h b/WCudaMSE/Student_Cuda_Image/src/cpp/core/02_Mandelbrot_Julia/moo/host/Fractal.h index d9b8841..41813e2 100755 --- a/WCudaMSE/Student_Cuda_Image/src/cpp/core/02_Mandelbrot_Julia/moo/host/Fractal.h +++ b/WCudaMSE/Student_Cuda_Image/src/cpp/core/02_Mandelbrot_Julia/moo/host/Fractal.h @@ -1,9 +1,13 @@ #ifndef FRACTAL_H_ #define FRACTAL_H_ +#include +#include + #include "cudaTools.h" #include "AnimableFonctionel_I.h" #include "MathTools.h" +#include "VariateurI.h" #include "VariateurF.h" class Fractal : public AnimableFonctionel_I @@ -17,8 +21,6 @@ class Fractal : public AnimableFonctionel_I int getH() /*override*/; DomaineMath* getDomaineMathInit() /*override*/; - string getTitle(void) /*override*/; - protected: // Inputs const int w; @@ -29,39 +31,53 @@ class Fractal : public AnimableFonctionel_I const dim3 db; DomaineMath* ptrDomaineMathInit; - - // Outputs - const string title; }; class FractalMandelbrot : public Fractal { public: - FractalMandelbrot(int w, int h, float dn); + FractalMandelbrot(int w, int h, int dn, bool multiGPU = false); void animationStep(); - float getT() /*override*/; + + std::vector getNames(); + void getValues(float* values); + + std::string getTitle(); private: - void runGPU(uchar4* ptrDevPixels, const DomaineMath& domaineMath) /*override*/; + void runGPU(uchar4* ptrDevPixels, const DomaineMath& domaineMath); - VariateurF variateurAnimationN; + VariateurI variateurAnimationN; + int n; - float n; + string title; + + // Utilisé uniquement dans le cadre du multi-GPU. + bool multiGPU; + uchar4** ptrDevPixelsMultGPU; // La mémoire alloué pour les GPU autres que le premier + int hFirstDevice; // Hauteur de l'image à traiter par le premier GPU. + int hDevices; // Hauteur de l'image à traiter par les autres GPU. }; class FractalJulia : public Fractal { public: - FractalJulia(int w, int h, float dn, float z_r_min, float z_r_max, float z_i_min, float z_i_max); + FractalJulia(int w, int h, int n, float z_r_min, float z_r_max, float z_i_min, float z_i_max); void animationStep(); - float getT() /*override*/; + + std::vector getNames(); + void getValues(float* values); + + std::string getTitle(); private: - void runGPU(uchar4* ptrDevPixels, const DomaineMath& domaineMath) /*override*/; + void runGPU(uchar4* ptrDevPixels, const DomaineMath& domaineMath); + + const int n; float z_r, z_i; - VariateurF variateurAnimationI; - VariateurF variateurAnimationR; + VariateurF variateurAnimationI; // Variateur pour z_i. + VariateurF variateurAnimationR; // Variateur pour z_r. }; #endif