+#include <iostream>\r
+\r
+#include "cudaTools.h"\r
+#include "Device.h"\r
+#include "MathTools.h"\r
+\r
+#include "Chronos.h"\r
+\r
+using std::cout;\r
+using std::endl;\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |* Declaration *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |* Imported *|\r
+ \*-------------------------------------*/\r
+\r
+extern void launchKernelVague0(uchar4* ptrDevPixels, int w, int h, float t);\r
+\r
+/*--------------------------------------*\\r
+ |* Public *|\r
+ \*-------------------------------------*/\r
+\r
+int vague0FreeGL(int itmax=1000);\r
+\r
+/*--------------------------------------*\\r
+ |* Private *|\r
+ \*-------------------------------------*/\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |* Implementation *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |* Public *|\r
+ \*-------------------------------------*/\r
+\r
+/**\r
+ * Hyp: itmax suffisamment grand pour que timeElapse soit significatif\r
+ */\r
+int vague0FreeGL(int itmax)\r
+ {\r
+ cout<<"\n[Vague0] : FreeGL running ..."<<endl;\r
+\r
+ int h = 16 * 60;\r
+ int w = h;\r
+\r
+ uchar4* ptrDevImage;\r
+ size_t size = w * h * sizeof(uchar4);\r
+ HANDLE_ERROR(cudaMalloc((void**) &ptrDevImage, size));\r
+ HANDLE_ERROR(cudaMemset(ptrDevImage, 0, size));\r
+\r
+ int i = 0;\r
+ float t = 0;\r
+ float dt = 2 * PI / 10000;\r
+ Chronos chrono;\r
+\r
+ while (i < itmax)\r
+ {\r
+ launchKernelVague0(ptrDevImage, w, h, t); // assynchrone!\r
+ Device::checkKernelError("Vague0");\r
+ Device::synchronize(); // Important!\r
+\r
+ t += dt;\r
+ i++;\r
+ }\r
+\r
+ chrono.stop();\r
+ HANDLE_ERROR(cudaFree(ptrDevImage));\r
+\r
+ double timeElapseS = chrono.getDeltaTime();\r
+ int fps = itmax / timeElapseS;\r
+\r
+ cout<<"fps : "<<fps<<endl;\r
+\r
+ return fps;\r
+ }\r
+\r
+/*--------------------------------------*\\r
+ |* Private *|\r
+ \*-------------------------------------*/\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |* End *|\r
+ \*---------------------------------------------------------------------*/\r
+\r