mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-22 03:47:00 +00:00
Examples: Emscripten+webgpu: Fixed WGPUInstance creation process + use preferred framebuffer format. (#6640, #6748)
This commit is contained in:
parent
4a81424492
commit
981abb4612
@ -72,6 +72,8 @@ Other changes:
|
|||||||
- Backends: SDL2,SDL3: added ImGui_ImplSDL2_InitForOther()/ImGui_ImplSDL3_InitForOther()
|
- Backends: SDL2,SDL3: added ImGui_ImplSDL2_InitForOther()/ImGui_ImplSDL3_InitForOther()
|
||||||
for consistency (matching GLFW backend) and as most initialization paths don't actually
|
for consistency (matching GLFW backend) and as most initialization paths don't actually
|
||||||
need to care about rendering backend.
|
need to care about rendering backend.
|
||||||
|
- Examples: Emscripten+WebGPU: Fixed WGPUInstance creation process + use preferred
|
||||||
|
framebuffer format. (#6640, #6748) [@smileorigin]
|
||||||
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
// Global WebGPU required states
|
// Global WebGPU required states
|
||||||
static WGPUDevice wgpu_device = nullptr;
|
static WGPUDevice wgpu_device = nullptr;
|
||||||
static WGPUSurface wgpu_surface = nullptr;
|
static WGPUSurface wgpu_surface = nullptr;
|
||||||
|
static WGPUTextureFormat wgpu_preferred_fmt = WGPUTextureFormat_RGBA8Unorm;
|
||||||
static WGPUSwapChain wgpu_swap_chain = nullptr;
|
static WGPUSwapChain wgpu_swap_chain = nullptr;
|
||||||
static int wgpu_swap_chain_width = 0;
|
static int wgpu_swap_chain_width = 0;
|
||||||
static int wgpu_swap_chain_height = 0;
|
static int wgpu_swap_chain_height = 0;
|
||||||
@ -71,7 +72,7 @@ int main(int, char**)
|
|||||||
|
|
||||||
// Setup Platform/Renderer backends
|
// Setup Platform/Renderer backends
|
||||||
ImGui_ImplGlfw_InitForOther(window, true);
|
ImGui_ImplGlfw_InitForOther(window, true);
|
||||||
ImGui_ImplWGPU_Init(wgpu_device, 3, WGPUTextureFormat_RGBA8Unorm, WGPUTextureFormat_Undefined);
|
ImGui_ImplWGPU_Init(wgpu_device, 3, wgpu_preferred_fmt, WGPUTextureFormat_Undefined);
|
||||||
|
|
||||||
// Load Fonts
|
// Load Fonts
|
||||||
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
|
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
|
||||||
@ -118,9 +119,11 @@ static bool InitWGPU()
|
|||||||
wgpu::SurfaceDescriptor surface_desc = {};
|
wgpu::SurfaceDescriptor surface_desc = {};
|
||||||
surface_desc.nextInChain = &html_surface_desc;
|
surface_desc.nextInChain = &html_surface_desc;
|
||||||
|
|
||||||
// Use 'null' instance
|
wgpu::Instance instance = wgpuCreateInstance(nullptr);
|
||||||
wgpu::Instance instance = {};
|
wgpu::Surface surface = instance.CreateSurface(&surface_desc);
|
||||||
wgpu_surface = instance.CreateSurface(&surface_desc).Release();
|
wgpu::Adapter adapter = {};
|
||||||
|
wgpu_preferred_fmt = (WGPUTextureFormat)surface.GetPreferredFormat(adapter);
|
||||||
|
wgpu_surface = surface.Release();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -144,7 +147,7 @@ static void MainLoopStep(void* window)
|
|||||||
wgpu_swap_chain_height = height;
|
wgpu_swap_chain_height = height;
|
||||||
WGPUSwapChainDescriptor swap_chain_desc = {};
|
WGPUSwapChainDescriptor swap_chain_desc = {};
|
||||||
swap_chain_desc.usage = WGPUTextureUsage_RenderAttachment;
|
swap_chain_desc.usage = WGPUTextureUsage_RenderAttachment;
|
||||||
swap_chain_desc.format = WGPUTextureFormat_RGBA8Unorm;
|
swap_chain_desc.format = wgpu_preferred_fmt;
|
||||||
swap_chain_desc.width = width;
|
swap_chain_desc.width = width;
|
||||||
swap_chain_desc.height = height;
|
swap_chain_desc.height = height;
|
||||||
swap_chain_desc.presentMode = WGPUPresentMode_Fifo;
|
swap_chain_desc.presentMode = WGPUPresentMode_Fifo;
|
||||||
|
Loading…
Reference in New Issue
Block a user