summaryrefslogtreecommitdiff
path: root/hw5/bin/HW5.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'hw5/bin/HW5.cpp')
-rw-r--r--hw5/bin/HW5.cpp56
1 files changed, 56 insertions, 0 deletions
diff --git a/hw5/bin/HW5.cpp b/hw5/bin/HW5.cpp
new file mode 100644
index 0000000..2908fb6
--- /dev/null
+++ b/hw5/bin/HW5.cpp
@@ -0,0 +1,56 @@
+#include <string>
+#include <chrono>
+#include <iostream>
+
+#include "util.h"
+#include "image.h"
+#include "scene.h"
+#include "imageIO.h"
+#include "sceneIO.h"
+
+int main(int argc, char** argv)
+{
+ // parse command line
+ if(argc < 2)
+ {
+ std::cout << "Usage: " << argv[0] << " <scene.xml> [scene2.xml ...]" << std::endl;
+ return -1;
+ }
+
+ // for each filename, import scene and render
+ unsigned int pos=1;
+ while(pos < argc)
+ {
+ // get filename
+ std::string filename = argv[pos++];
+
+ // import
+ std::cerr << " * Reading " << filename << "...";
+ auto startImport = std::chrono::system_clock::now();
+
+ scene s;
+ importScene(filename, s);
+
+ auto endImport = std::chrono::system_clock::now();
+ std::chrono::duration<float> durationImport = endImport - startImport;
+ std::cerr << durationImport.count() << " seconds." << std::endl;
+
+ // render
+ std::cerr << " * Rendering... ";
+ auto startTime = std::chrono::system_clock::now();
+
+ image result = s.render();
+
+ auto endTime = std::chrono::system_clock::now();
+ std::chrono::duration<float> duration = endTime - startTime;
+ std::cerr << duration.count() << " seconds." << std::endl;
+
+ // save image (both pfm and ppm)
+ std::cerr << " * Writing result." << std::endl;
+ exportImage(getFilename(filename) + ".pfm", result);
+ exportImage(getFilename(filename) + ".ppm", result);
+ }
+
+ // Done.
+ return 0;
+}