aboutsummaryrefslogtreecommitdiff
path: root/src/raytracer/raytracer.cpp
diff options
context:
space:
mode:
authorDavid Doan <daviddoan@Davids-MacBook-Pro-193.local>2023-12-13 01:37:28 -0500
committerDavid Doan <daviddoan@Davids-MacBook-Pro-193.local>2023-12-13 01:37:28 -0500
commit8afef246ac0d7adf03eae794fc1ba5ba25f64dd8 (patch)
tree05582f1d5a50ca9d21c9c12d06dd258d40b113a3 /src/raytracer/raytracer.cpp
parenta31f51672fe92d8d5cb2c9319a0ba35a52d3b51b (diff)
parent8337f9b0b63e2e63b714acd5d24b622d7330cbc2 (diff)
Merge branch 'main' of https://github.com/NicholasBottone/the-all-americans-in-cs1230
render button
Diffstat (limited to 'src/raytracer/raytracer.cpp')
-rw-r--r--src/raytracer/raytracer.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/raytracer/raytracer.cpp b/src/raytracer/raytracer.cpp
index 449a04a..f831f82 100644
--- a/src/raytracer/raytracer.cpp
+++ b/src/raytracer/raytracer.cpp
@@ -68,7 +68,17 @@ void RayTracer::render(RGBA *imageData, const RayTraceScene &scene) {
}
}
}
- settings.rotation += 0.5f;
+
+ if (settings.bulkOutputFilePath.size() > 0) { // means we are doing bulk rendering
+ // save the image to the bulk directory
+ std::string filePath = settings.bulkOutputFilePath + QDir::separator().toLatin1() + std::to_string(settings.currentTime) + ".png";
+ saveViewportImage(filePath);
+ if (settings.currentTime < settings.maxTime) { // still more to render
+ // render the next frame
+ settings.currentTime++;
+ emit settingsChanged(m_imageLabel); // emit to allow the UI to update then render the next frame
+ }
+ }
}
@@ -197,6 +207,7 @@ void RayTracer::settingsChanged(QLabel* imageLabel) {
QImage image = QImage(576, 432, QImage::Format_RGBX8888);
image.fill(Qt::black);
RGBA *data = reinterpret_cast<RGBA *>(image.bits());
+ m_imageData = data;
imageLabel->setPixmap(QPixmap::fromImage(image));
return;
}
@@ -288,3 +299,7 @@ void RayTracer::keyReleaseEvent(QKeyEvent *event) {
m_keyMap[Qt::Key(event->key())] = false;
}
+void RayTracer::saveViewportImage(std::string filePath) {
+ QImage image = QImage((uchar *) m_imageData, 576, 432, QImage::Format_RGBX8888);
+ image.save(QString::fromStdString(filePath));
+}