From 274a686c5849851e699a78ca7034c905cb28dbaf Mon Sep 17 00:00:00 2001 From: Onek8 Date: Tue, 16 Jun 2026 01:16:56 -0700 Subject: [PATCH] Cleanup --- Sources/viewport_server.cpp | 43 ++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/Sources/viewport_server.cpp b/Sources/viewport_server.cpp index f2ed445..3c7f183 100644 --- a/Sources/viewport_server.cpp +++ b/Sources/viewport_server.cpp @@ -1,6 +1,6 @@ /** * Viewport Server Implementation - Shared Memory Framebuffer Export - * + * */ #include "viewport_server.h" @@ -259,7 +259,6 @@ bool viewport_server_init(const char* shmem_name, int width, int height) { memset(pixel_dest, 0, max_pixel_size); #if !defined(KINC_DIRECT3D11) && !defined(KINC_OPENGL) - // Only create render target for platforms that need it (not Direct3D11 or OpenGL) kinc_g4_render_target_t* rt = (kinc_g4_render_target_t*)malloc(sizeof(kinc_g4_render_target_t)); if (!rt) { kinc_log(KINC_LOG_LEVEL_ERROR, "Failed to allocate render target"); @@ -426,33 +425,33 @@ void viewport_server_end_frame(void) { memcpy(pixel_dest, pixels, pixel_size); } } -#elif defined(KINC_OPENGL) - // OpenGL - read from default framebuffer using glReadPixels - glReadPixels(0, 0, g_viewport_state.width, g_viewport_state.height, GL_RGBA, GL_UNSIGNED_BYTE, pixels); - // OpenGL returns pixels bottom-to-top, need to flip - size_t row_size = g_viewport_state.width * 4; - for (int y = 0; y < g_viewport_state.height / 2; ++y) { - uint8_t* row_top = pixels + y * row_size; - uint8_t* row_bottom = pixels + (g_viewport_state.height - 1 - y) * row_size; - for (size_t x = 0; x < row_size; ++x) { - uint8_t temp = row_top[x]; - row_top[x] = row_bottom[x]; - row_bottom[x] = temp; - } - } - memcpy(pixel_dest, pixels, pixel_size); +//#elif defined(KINC_OPENGL) +// glReadPixels(0, 0, g_viewport_state.width, g_viewport_state.height, GL_RGBA, GL_UNSIGNED_BYTE, pixels); +// size_t row_size = g_viewport_state.width * 4; +// for (int y = 0; y < g_viewport_state.height / 2; ++y) { +// uint8_t* row_top = pixels + y * row_size; +// uint8_t* row_bottom = pixels + (g_viewport_state.height - 1 - y) * row_size; +// for (size_t x = 0; x < row_size; ++x) { +// uint8_t temp = row_top[x]; +// row_top[x] = row_bottom[x]; +// row_bottom[x] = temp; +// } +// } +// memcpy(pixel_dest, pixels, pixel_size); #else // other platforms use render target - kinc_g4_render_target_t* rt = (kinc_g4_render_target_t*)g_viewport_state.render_target; - kinc_g4_render_target_get_pixels(rt, pixels); - memcpy(pixel_dest, pixels, pixel_size); + if (g_viewport_state.render_target) { + kinc_g4_render_target_t* rt = (kinc_g4_render_target_t*)g_viewport_state.render_target; + kinc_g4_render_target_get_pixels(rt, pixels); + memcpy(pixel_dest, pixels, pixel_size); + } #endif g_viewport_state.frame_count++; header->frame_id = g_viewport_state.frame_count; - // NOTE: Camera sync from Krom to Blender is handled via viewport_server_set_camera() - // which is called explicitly when Krom's internal camera changes. + // NOTE: Camera sync from RunT to Blender is handled via viewport_server_set_camera() + // which is called explicitly when RunT's internal camera changes. // We do NOT extract camera from view_matrix here as that would create a feedback loop // (Blender sends view_matrix -> we extract camera -> Blender applies it -> repeat)