MCPcopy Create free account
hub / github.com/SakuraEngine/SakuraEngine / main_module_exec

Method main_module_exec

modules/tools/asset_tool/main.cpp:72–277  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

70extern void create_imgui_resources(SRenderDeviceId render_device, skr::render_graph::RenderGraph* renderGraph, skr_vfs_t* vfs);
71
72int 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)

Callers

nothing calls this directly

Calls 15

skr_create_windowFunction · 0.85
cgpu_create_fenceFunction · 0.85
skr_init_hires_timerFunction · 0.85
cgpu_wait_queue_idleFunction · 0.85
cgpu_wait_fencesFunction · 0.85
EndClass · 0.85
cgpu_acquire_next_imageFunction · 0.85

Tested by

no test coverage detected