use save ppm

This commit is contained in:
Shuo Feng 2024-02-19 01:15:30 -05:00
parent 1d19b6bcc4
commit d06d07217f
Signed by: sfeng
GPG key ID: 1E83AE6CD1C037B1
2 changed files with 3 additions and 13 deletions

View file

@ -20,7 +20,7 @@ void RayTracer::parse() {
void RayTracer::render(Scene *scene) { void RayTracer::render(Scene *scene) {
int width = scene->getWidth(); int width = scene->getWidth();
int height = scene->getHeight(); int height = scene->getHeight();
Buffer buffer(width * height); Buffer buffer(width * height * 3);
Task *task = new Task(scene, buffer); Task *task = new Task(scene, buffer);
tasks.push_back(task); tasks.push_back(task);
} }
@ -30,17 +30,7 @@ void RayTracer::output(Task *task) {
int width = task->first->getWidth(); int width = task->first->getWidth();
int height = task->first->getHeight(); int height = task->first->getHeight();
std::ofstream fout(path, std::ios_base::out | std::ios_base::binary); save_ppm(path, task->second, width, height);
fout << "P6" << std::endl
<< width << ' ' << height << std::endl
<< "255" << std::endl;
Buffer buffer = task->second;
for (int i = 0; i < height; ++i)
for (int j = 0; j < width; ++j)
fout << 255.0 * buffer[i * width + j].transpose() << ' ';
fout.close();
} }
void RayTracer::run() { void RayTracer::run() {

View file

@ -9,7 +9,7 @@
#include <utility> #include <utility>
#include <vector> #include <vector>
using Buffer = std::vector<Eigen::Vector3f>; using Buffer = std::vector<double>;
using Task = std::pair<Scene *, Buffer>; using Task = std::pair<Scene *, Buffer>;
class RayTracer { class RayTracer {