Ajout des cas de tests pour les TP non-graphiques. Cleanage en tous genres.
[GPU.git] / WCudaMSE / Student_Cuda_Image / src / cpp / core / mainGL.cpp
index 10a9393..d7a9fec 100755 (executable)
@@ -18,18 +18,49 @@ using namespace std;
 \r
 #include "Viewer.h"\r
 \r
-int mainGL(void)\r
+int mainGL(const vector<string>& args)\r
     {\r
-    // AutoViewer<Rippling0Image, Rippling0Provider> rippling0(true, true, 10, 10);\r
-    // AutoViewer<Image, RipplingProvider> rippling0(true, true, 10, 10);\r
-    // Viewer<ImageFonctionel> fractalMandelbrot(MandelbrotProvider::createGL(true), true, true, 20, 20);\r
-    // AutoViewer<ImageFonctionel, JuliaProvider> fractalJulia(true, true, 30, 30);\r
-    // AutoViewer<ImageFonctionel, NewtonProvider> newtown(true, true, 20, 20);\r
-    // AutoViewer<Image, HeatTransfertProvider> heatTransfert(true, false, 20, 20);\r
-    // AutoViewer<ImageFonctionel, RayTracingProvider> rayTracing(true, true, 20, 20);\r
-    Viewer<Image> convolution(ConvolutionProvider::createGL("/media/Data/Video/nasaFHD_short.avi"), true, true, 20, 20);\r
-\r
-    GLUTImageViewers::runALL(); // Bloquant, Tant qu'une fenêtre est ouverte.\r
+    const string defaultCommand = "demo";\r
+    const string command = args.size() > 0 ? args[0] : defaultCommand;\r
+\r
+    // AutoViewer<Rippling0Image, Rippling0Provider> rippling0(true, true, 10, 10); // Warmup.\r
+\r
+    if (command == "rippling")\r
+        {\r
+        AutoViewer<Image, RipplingProvider> rippling(true, true, 10, 10);\r
+        }\r
+    else if (command == "mandelbrot")\r
+        {\r
+        const bool multiGPU = args.size() >= 2 && args[1] == "--mp";\r
+        Viewer<ImageFonctionel> fractalMandelbrot(MandelbrotProvider::createGL(multiGPU), true, true, 10, 10);\r
+        }\r
+    else if (command == "julia")\r
+        AutoViewer<ImageFonctionel, JuliaProvider> fractalJulia(true, true, 10, 10);\r
+    else if (command == "newton")\r
+        AutoViewer<ImageFonctionel, NewtonProvider> newtown(true, true, 10, 10);\r
+    else if (command == "heat-transfert")\r
+        AutoViewer<Image, HeatTransfertProvider> heatTransfert(true, false, 10, 10);\r
+    else if (command == "convolution")\r
+        {\r
+        const string videoPath = args.size() >= 2 ? args[1] : "/media/Data/Video/nasaFHD_short.avi"; // Vidéo par défaut si pas donnée en paramètre.\r
+        Viewer<Image> convolution(ConvolutionProvider::createGL(videoPath), true, true, 10, 10);\r
+        }\r
+    else if (command == "demo")\r
+        {\r
+        Viewer<Image> convolution(ConvolutionProvider::createGL("/media/Data/Video/nasaFHD_short.avi"), true, true, 10, 10, false);\r
+        AutoViewer<Image, RipplingProvider> rippling(true, true, 60, 30, false);\r
+        Viewer<ImageFonctionel> fractalMandelbrot(MandelbrotProvider::createGL(false), true, true, 120, 60, false);\r
+        AutoViewer<ImageFonctionel, JuliaProvider> fractalJulia(true, true, 180, 80, false);\r
+        AutoViewer<ImageFonctionel, NewtonProvider> newtown(true, true, 260, 120, false);\r
+        AutoViewer<Image, HeatTransfertProvider> heatTransfert(true, false, 1200, 300, false);\r
+        GLUTImageViewers::runALL();\r
+        }\r
+    else\r
+        {\r
+        cout << "Command unknown: " << command << endl;\r
+        }\r
+\r
+    // AutoViewer<ImageFonctionel, RayTracingProvider> rayTracing(true, true, 20, 20); // Commenté car projet approfondit.\r
 \r
     return EXIT_SUCCESS;\r
     }\r