* Ajout d'un exemple CUDA non-openGL (AddVector.cu)
[GPU.git] / WCudaMSE / Student_Cuda_Image / src / cpp / core / 01_Rippling / moo / host / Rippling.cu
1 #include <iostream>\r
2 #include <assert.h>\r
3 \r
4 #include "Rippling.h"\r
5 #include "Device.h"\r
6 \r
7 using std::cout;\r
8 using std::endl;\r
9 \r
10 /*----------------------------------------------------------------------*\\r
11  |*                     Declaration                                     *|\r
12  \*---------------------------------------------------------------------*/\r
13 \r
14 /*--------------------------------------*\\r
15  |*             Imported                *|\r
16  \*-------------------------------------*/\r
17 \r
18 extern __global__ void rippling(uchar4* ptrDevPixels, int w, int h, float t);\r
19 \r
20 /*--------------------------------------*\\r
21  |*             Public                  *|\r
22  \*-------------------------------------*/\r
23 \r
24 /*--------------------------------------*\\r
25  |*             Private                 *|\r
26  \*-------------------------------------*/\r
27 \r
28 /*----------------------------------------------------------------------*\\r
29  |*                     Implementation                                  *|\r
30  \*---------------------------------------------------------------------*/\r
31 \r
32 /*--------------------------------------*\\r
33  |*             Public                  *|\r
34  \*-------------------------------------*/\r
35 \r
36 /*-------------------------*\\r
37  |*     Constructeur        *|\r
38  \*-------------------------*/\r
39 \r
40 Rippling::Rippling(int w, int h, float dt)\r
41     : w(w), h(h), dt(dt), t(0),\r
42       dg(8, 8, 1),\r
43       db(16, 16, 1),\r
44       title("Rippling Cuda")\r
45     {\r
46     assert(w == h);\r
47 \r
48     //print(dg, db);\r
49     Device::assertDim(dg, db);\r
50     }\r
51 \r
52 Rippling::~Rippling()\r
53     {\r
54     // rien\r
55     }\r
56 \r
57 /*-------------------------*\\r
58  |*     Methode             *|\r
59  \*-------------------------*/\r
60 \r
61 /**\r
62  * Override\r
63  */\r
64 void Rippling::animationStep()\r
65     {\r
66     this->t += dt;\r
67     }\r
68 \r
69 /**\r
70  * Override\r
71  */\r
72 void Rippling::runGPU(uchar4* ptrDevPixels)\r
73     {\r
74     rippling<<<dg,db>>>(ptrDevPixels, this->w, this->h, this->t);\r
75     }\r
76 \r
77 /*--------------*\\r
78  |*     get      *|\r
79  \*--------------*/\r
80 \r
81 /**\r
82  * Override\r
83  */\r
84 float Rippling::getT(void)\r
85     {\r
86     return t;\r
87     }\r
88 \r
89 /**\r
90  * Override\r
91  */\r
92 int Rippling::getW(void)\r
93     {\r
94     return w;\r
95     }\r
96 \r
97 /**\r
98  * Override\r
99  */\r
100 int Rippling::getH(void)\r
101     {\r
102     return h;\r
103     }\r
104 \r
105 /**\r
106  * Override\r
107  */\r
108 string Rippling::getTitle(void)\r
109     {\r
110     return title;\r
111     }\r
112 \r
113 /*--------------------------------------*\\r
114  |*             Private                 *|\r
115  \*-------------------------------------*/\r
116 \r
117 /*----------------------------------------------------------------------*\\r
118  |*                     End                                             *|\r
119  \*---------------------------------------------------------------------*/\r
120 \r