From cdd1ef5e8ea55552dc478ab162521ed34f20bc6e Mon Sep 17 00:00:00 2001 From: Yggdrasil75 Date: Thu, 8 Jan 2026 14:19:52 -0500 Subject: [PATCH] manual save works. but not while in the frame --- tests/g3test2.cpp | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/tests/g3test2.cpp b/tests/g3test2.cpp index 3d31a5d..0e48558 100644 --- a/tests/g3test2.cpp +++ b/tests/g3test2.cpp @@ -56,7 +56,8 @@ void setup(defaults config, VoxelGrid& grid) { void livePreview(VoxelGrid& grid, defaults config, Camera cam) { updatePreview = true; //std::lock_guard lock(PreviewMutex); - frame currentPreviewFrame = grid.renderFrame(cam.posfor.origin, cam.posfor.direction, cam.up, cam.fov, config.outWidth, config.outHeight, frame::colormap::BGRA); + //frame currentPreviewFrame = + grid.renderFrame(cam.posfor.origin, cam.posfor.direction, cam.up, cam.fov, config.outWidth, config.outHeight, frame::colormap::BGRA); // glGenTextures(1, &textu); // glBindTexture(GL_TEXTURE_2D, textu); @@ -69,11 +70,36 @@ void livePreview(VoxelGrid& grid, defaults config, Camera cam) { // 0, GL_RGBA, GL_UNSIGNED_BYTE, currentPreviewFrame.getData().data()); std::cout << "freeing previous frame" << std::endl; - currentPreviewFrame.free(); + //currentPreviewFrame.free(); updatePreview = false; textureInitialized = true; } +bool savePreview(VoxelGrid& grid, defaults config, Camera cam) { + TIME_FUNCTION; + + std::vector renderBuffer; + size_t width = config.outWidth; + size_t height = config.outHeight; + + // Render the view + frame output = grid.renderFrame(cam.posfor.origin, cam.posfor.direction, cam.up, cam.fov, config.outWidth, config.outHeight, frame::colormap::RGB); + //grid.renderOut(renderBuffer, width, height, cam); + + // Save to BMP + bool success = BMPWriter::saveBMP("output/save.bmp", output); + //bool success = BMPWriter::saveBMP(filename, renderBuffer, width, height); + + // if (success) { + // std::cout << "Saved: " << filename << std::endl; + // } else { + // std::cout << "Failed to save: " << filename << std::endl; + // } + + return success; + +} + static void glfw_error_callback(int error, const char* description) { fprintf(stderr, "GLFW Error %d: %s\n", error, description); @@ -173,7 +199,7 @@ int main() { if (ImGui::Button("Generate Grid")) { setup(config, grid); gridInitialized = true; - + //livePreview(grid,config,cam); } ImGui::End(); @@ -193,9 +219,9 @@ int main() { // ImGui::End(); // } - if (gridInitialized && updatePreview == false) { - livePreview(grid, config, cam); - } + // if (gridInitialized && updatePreview == false) { + // livePreview(grid, config, cam); + // } // std::cout << "ending frame" << std::endl; ImGui::Render(); @@ -219,6 +245,7 @@ int main() { ImGui_ImplOpenGL3_Shutdown(); ImGui_ImplGlfw_Shutdown(); ImGui::DestroyContext(); + savePreview(grid, config, cam); // std::cout << "destroying" << std::endl; glfwDestroyWindow(window);