paysages3d/src/interface/commandline/render.cpp

37 lines
951 B
C++
Raw Normal View History

2015-09-09 22:40:47 +00:00
#include "Thread.h"
#include "SoftwareCanvasRenderer.h"
class RenderThread : public Thread {
public:
RenderThread(SoftwareCanvasRenderer *renderer, const char *outputpath)
: renderer(renderer), outputpath(outputpath) {
2015-09-09 22:40:47 +00:00
}
virtual void run() override {
2015-09-09 22:40:47 +00:00
renderer->render();
}
private:
2015-09-09 22:40:47 +00:00
SoftwareCanvasRenderer *renderer;
const char *outputpath;
};
void startRender(SoftwareCanvasRenderer *renderer, const char *outputpath) {
2015-09-09 22:40:47 +00:00
RenderThread thread(renderer, outputpath);
printf("\rRendering %s ... \n", outputpath);
thread.start();
while (thread.isWorking()) {
2015-09-09 22:40:47 +00:00
Thread::timeSleepMs(200);
printf("\rProgress : %0.1f%% ", renderer->getProgress() * 100.0);
fflush(stdout);
}
thread.join();
printf("\rSaving %s ... \n", outputpath);
remove(outputpath);
renderer->saveToDisk(outputpath);
}