diff --git a/src/main.c b/src/main.c index 1eb3fc9..3d1dd86 100644 --- a/src/main.c +++ b/src/main.c @@ -30,6 +30,9 @@ float *generate_data_surface(unsigned int, unsigned char *); float *generate_normals_surface(float *, unsigned char); +float graph_color[3] = {1.0f, 1.0f, 1.0f}; // Inicialización al blanco + + const char *wname = "manigraph: manifold grapher"; struct projection projection = {.x = 0, .y = 1, .z = 2, .w = 3}; @@ -142,6 +145,10 @@ int main(void) nk_glfw3_font_stash_end(&glfw); } + /* Variable para el color */ + static struct nk_colorf picked_color = {1.0f, 1.0f, 1.0f, 1.0f}; // Blanco en formato flotante + + mlog("[MAIN LOOP] Inicializando...\n"); while (is_open_window(window)) { @@ -166,28 +173,31 @@ int main(void) #endif draw_mesh(m_surface); - /* Drawind nuklear */ + /* Dibujando interfaz gráfica */ { - nk_glfw3_new_frame(&glfw); + nk_glfw3_new_frame(&glfw); - if (nk_begin(context, "Nuklear Window", nk_rect(0, 0, 500, 500), - NK_WINDOW_BORDER | NK_WINDOW_TITLE | NK_WINDOW_MINIMIZABLE | NK_WINDOW_MOVABLE | NK_WINDOW_SCALABLE)) { - // Añadir texto - nk_layout_row_static(context, 30, 200, 1); // Configuración de fila (altura: 30, ancho: 200, elementos: 1) - nk_label(context, "MANIGRAPH", NK_TEXT_ALIGN_LEFT); + if (nk_begin(context, "Nuklear Window", nk_rect(0, 0, 500, 500), + NK_WINDOW_BORDER | NK_WINDOW_TITLE | NK_WINDOW_MINIMIZABLE | NK_WINDOW_MOVABLE | NK_WINDOW_SCALABLE)) { + + // Color Picker + nk_layout_row_dynamic(context, 120, 1); // Crear espacio para el selector de color + picked_color = nk_color_picker(context, picked_color, NK_RGBA); - // Añadir botón - nk_layout_row_static(context, 30, 200, 1); // Configuración de fila - if (nk_button_label(context, "Presióname")) { - // Acción cuando el botón es presionado - printf("¡Botón presionado!\n"); - } - } + // Aplicar el color seleccionado al gráfico + graph_color[0] = picked_color.r; // Rojo + graph_color[1] = picked_color.g; // Verde + graph_color[2] = picked_color.b; // Azul - nk_end(context); - nk_glfw3_render(&glfw, NK_ANTI_ALIASING_ON, MAX_VERTEX_BUFFER, MAX_ELEMENT_BUFFER); -} + glUseProgram(shader); + glUniform3fv(glGetUniformLocation(shader, "uColor"), 1, graph_color); + + } + + nk_end(context); + nk_glfw3_render(&glfw, NK_ANTI_ALIASING_ON, MAX_VERTEX_BUFFER, MAX_ELEMENT_BUFFER); + } } mlog("[MAIN LOOP] Terminando...\n"); @@ -205,22 +215,15 @@ int main(void) close_window(window); return 0; - mlog("[MESH] Destruyendo...\n"); - destroy_mesh(m_axis); error_mesh_axis: - mlog("[MESH] Destruyendo...\n"); destroy_mesh(m_surface); error_mesh_surface: - mlog("[SHADER] Destruyendo...\n"); destroy_shader(shader_plain); error_shader_plain: - mlog("[SHADER] Destruyendo...\n"); destroy_shader(shader); error_shader: - mlog("[TEXTURE] Destruyendo...\n"); destroy_texture(texture); error_context: - mlog("[WINDOW] Destruyendo...\n"); close_window(window); error_window: return 1;