| 70 | extern void create_imgui_resources(SRenderDeviceId render_device, skr::render_graph::RenderGraph* renderGraph, skr_vfs_t* vfs); |
| 71 | |
| 72 | int SAssetImportModule::main_module_exec(int argc, char8_t** argv) |
| 73 | { |
| 74 | skr::String filePath; |
| 75 | skr::Vector<skd::asset::SImporterFactory*> factories; |
| 76 | skr::Vector<skd::asset::SImporterFactory*> availableFactories; |
| 77 | |
| 78 | if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS) != 0) |
| 79 | return -1; |
| 80 | auto render_device = skr_get_default_render_device(); |
| 81 | auto cgpu_device = render_device->get_cgpu_device(); |
| 82 | auto gfx_queue = render_device->get_gfx_queue(); |
| 83 | auto window_desc = make_zeroed<SWindowDescroptor>(); |
| 84 | window_desc.flags = SKR_WINDOW_CENTERED | SKR_WINDOW_RESIZABLE; |
| 85 | window_desc.height = 1000; |
| 86 | window_desc.width = 1500; |
| 87 | window = skr_create_window( |
| 88 | skr::format(u8"Asset Tool [{}]", gCGPUBackendNames[cgpu_device->adapter->instance->backend]).u8_str(), |
| 89 | &window_desc); |
| 90 | |
| 91 | // Initialize renderer |
| 92 | auto swapchain = skr_render_device_register_window(render_device, window); |
| 93 | auto present_fence = cgpu_create_fence(cgpu_device); |
| 94 | namespace render_graph = skr::render_graph; |
| 95 | auto renderGraph = render_graph::RenderGraph::create( |
| 96 | [=](skr::render_graph::RenderGraphBuilder& builder) { |
| 97 | builder.with_device(cgpu_device) |
| 98 | .with_gfx_queue(gfx_queue) |
| 99 | .enable_memory_aliasing(); |
| 100 | }); |
| 101 | create_imgui_resources(render_device, renderGraph, resource_vfs); |
| 102 | ImGui_ImplSDL2_InitForCGPU((SDL_Window*)window, swapchain); |
| 103 | uint64_t frame_index = 0; |
| 104 | SHiresTimer tick_timer; |
| 105 | skr_init_hires_timer(&tick_timer); |
| 106 | |
| 107 | bool quit = false; |
| 108 | while (!quit) |
| 109 | { |
| 110 | FrameMark; |
| 111 | SDL_Event event; |
| 112 | while (SDL_PollEvent(&event)) |
| 113 | { |
| 114 | ImGui_ImplSDL2_ProcessEvent(&event); |
| 115 | if (event.type == SDL_WINDOWEVENT) |
| 116 | { |
| 117 | Uint8 window_event = event.window.event; |
| 118 | if (window_event == SDL_WINDOWEVENT_SIZE_CHANGED) |
| 119 | { |
| 120 | cgpu_wait_queue_idle(gfx_queue); |
| 121 | cgpu_wait_fences(&present_fence, 1); |
| 122 | swapchain = skr_render_device_recreate_window_swapchain(render_device, window); |
| 123 | ImGui_ImplSDL2_UpdateSwapChain(swapchain); |
| 124 | } |
| 125 | } |
| 126 | if (event.type == SDL_WINDOWEVENT) |
| 127 | { |
| 128 | Uint8 window_event = event.window.event; |
| 129 | if (window_event == SDL_WINDOWEVENT_CLOSE || window_event == SDL_WINDOWEVENT_MOVED || window_event == SDL_WINDOWEVENT_RESIZED) |
nothing calls this directly
no test coverage detected