mirror of
https://github.com/ocornut/imgui.git
synced 2026-11-06 14:35:51 +01:00
Examples: GLFW/SDL2/SDL3+WebGPU: better select surface format instead of using surface_capabilities.formats[0]. (#9576)
This commit is contained in:
parent
906c6838ad
commit
dc09bbee1e
@ -435,6 +435,7 @@ Other Changes:
|
||||
- Examples:
|
||||
- MSVC: disabled /JMC in Visual Studio projects (unnecessary overhead).
|
||||
- GLFW/SDL2/SDL3+WebGPU: fixed running with wgpu-native missing `wgpuInstanceWaitAny()`. (#9377)
|
||||
- GLFW/SDL2/SDL3+WebGPU: better select surface format. (#9576) [@ypujante]
|
||||
- GLFW+Metal: fixed mistakenly calling `ImGui_ImplGlfw_InitForOpenGL()`, which
|
||||
broke multi-viewport support. (#9564) [@ypujante]
|
||||
- SDL2+Metal: create Metal context without using a `SDL_Renderer`.
|
||||
|
||||
@ -290,6 +290,16 @@ int main(int, char**)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static WGPUTextureFormat SelectSurfaceFormat(const WGPUSurfaceCapabilities& capabilities)
|
||||
{
|
||||
const WGPUTextureFormat preferredFormats[] = { WGPUTextureFormat_BGRA8Unorm, WGPUTextureFormat_RGBA8Unorm, WGPUTextureFormat_BGRA8UnormSrgb, WGPUTextureFormat_RGBA8UnormSrgb };
|
||||
for (WGPUTextureFormat preferredFormat : preferredFormats)
|
||||
for (size_t n = 0; n < capabilities.formatCount; n++)
|
||||
if (capabilities.formats[n] == preferredFormat)
|
||||
return preferredFormat;
|
||||
return capabilities.formatCount > 0 ? capabilities.formats[0] : WGPUTextureFormat_Undefined;
|
||||
}
|
||||
|
||||
#if defined(IMGUI_IMPL_WEBGPU_BACKEND_DAWN)
|
||||
static WGPUAdapter RequestAdapter(wgpu::Instance& instance)
|
||||
{
|
||||
@ -440,8 +450,7 @@ static bool InitWGPU(GLFWwindow* window)
|
||||
|
||||
WGPUSurfaceCapabilities surface_capabilities = {};
|
||||
wgpuSurfaceGetCapabilities(wgpu_surface, adapter.Get(), &surface_capabilities);
|
||||
|
||||
preferred_fmt = surface_capabilities.formats[0];
|
||||
preferred_fmt = SelectSurfaceFormat(surface_capabilities);
|
||||
|
||||
// WGPU backend: Adapter and Device acquisition, Surface creation
|
||||
#elif defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) || defined(IMGUI_IMPL_WEBGPU_BACKEND_WGVK)
|
||||
@ -470,8 +479,7 @@ static bool InitWGPU(GLFWwindow* window)
|
||||
|
||||
WGPUSurfaceCapabilities surface_capabilities = {};
|
||||
wgpuSurfaceGetCapabilities(wgpu_surface, adapter, &surface_capabilities);
|
||||
|
||||
preferred_fmt = surface_capabilities.formats[0];
|
||||
preferred_fmt = SelectSurfaceFormat(surface_capabilities);
|
||||
#endif // IMGUI_IMPL_WEBGPU_BACKEND_WGPU
|
||||
|
||||
wgpu_surface_configuration.presentMode = WGPUPresentMode_Fifo;
|
||||
|
||||
@ -276,6 +276,16 @@ int main(int, char**)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static WGPUTextureFormat SelectSurfaceFormat(const WGPUSurfaceCapabilities& capabilities)
|
||||
{
|
||||
const WGPUTextureFormat preferredFormats[] = { WGPUTextureFormat_BGRA8Unorm, WGPUTextureFormat_RGBA8Unorm, WGPUTextureFormat_BGRA8UnormSrgb, WGPUTextureFormat_RGBA8UnormSrgb };
|
||||
for (WGPUTextureFormat preferredFormat : preferredFormats)
|
||||
for (size_t n = 0; n < capabilities.formatCount; n++)
|
||||
if (capabilities.formats[n] == preferredFormat)
|
||||
return preferredFormat;
|
||||
return capabilities.formatCount > 0 ? capabilities.formats[0] : WGPUTextureFormat_Undefined;
|
||||
}
|
||||
|
||||
#if defined(IMGUI_IMPL_WEBGPU_BACKEND_DAWN)
|
||||
static WGPUAdapter RequestAdapter(wgpu::Instance& instance)
|
||||
{
|
||||
@ -427,8 +437,7 @@ static bool InitWGPU(SDL_Window* window)
|
||||
|
||||
WGPUSurfaceCapabilities surface_capabilities = {};
|
||||
wgpuSurfaceGetCapabilities(wgpu_surface, adapter.Get(), &surface_capabilities);
|
||||
|
||||
preferred_fmt = surface_capabilities.formats[0];
|
||||
preferred_fmt = SelectSurfaceFormat(surface_capabilities);
|
||||
|
||||
// WGPU backend: Adapter and Device acquisition, Surface creation
|
||||
#elif defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) || defined(IMGUI_IMPL_WEBGPU_BACKEND_WGVK)
|
||||
@ -457,8 +466,7 @@ static bool InitWGPU(SDL_Window* window)
|
||||
|
||||
WGPUSurfaceCapabilities surface_capabilities = {};
|
||||
wgpuSurfaceGetCapabilities(wgpu_surface, adapter, &surface_capabilities);
|
||||
|
||||
preferred_fmt = surface_capabilities.formats[0];
|
||||
preferred_fmt = SelectSurfaceFormat(surface_capabilities);
|
||||
#endif // IMGUI_IMPL_WEBGPU_BACKEND_WGPU
|
||||
|
||||
wgpu_surface_configuration.presentMode = WGPUPresentMode_Fifo;
|
||||
|
||||
@ -287,6 +287,16 @@ int main(int, char**)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static WGPUTextureFormat SelectSurfaceFormat(const WGPUSurfaceCapabilities& capabilities)
|
||||
{
|
||||
const WGPUTextureFormat preferredFormats[] = { WGPUTextureFormat_BGRA8Unorm, WGPUTextureFormat_RGBA8Unorm, WGPUTextureFormat_BGRA8UnormSrgb, WGPUTextureFormat_RGBA8UnormSrgb };
|
||||
for (WGPUTextureFormat preferredFormat : preferredFormats)
|
||||
for (size_t n = 0; n < capabilities.formatCount; n++)
|
||||
if (capabilities.formats[n] == preferredFormat)
|
||||
return preferredFormat;
|
||||
return capabilities.formatCount > 0 ? capabilities.formats[0] : WGPUTextureFormat_Undefined;
|
||||
}
|
||||
|
||||
#if defined(IMGUI_IMPL_WEBGPU_BACKEND_DAWN)
|
||||
static WGPUAdapter RequestAdapter(wgpu::Instance& instance)
|
||||
{
|
||||
@ -438,8 +448,7 @@ static bool InitWGPU(SDL_Window* window)
|
||||
|
||||
WGPUSurfaceCapabilities surface_capabilities = {};
|
||||
wgpuSurfaceGetCapabilities(wgpu_surface, adapter.Get(), &surface_capabilities);
|
||||
|
||||
preferred_fmt = surface_capabilities.formats[0];
|
||||
preferred_fmt = SelectSurfaceFormat(surface_capabilities);
|
||||
|
||||
// WGPU backend: Adapter and Device acquisition, Surface creation
|
||||
#elif defined(IMGUI_IMPL_WEBGPU_BACKEND_WGPU) || defined(IMGUI_IMPL_WEBGPU_BACKEND_WGVK)
|
||||
@ -468,8 +477,7 @@ static bool InitWGPU(SDL_Window* window)
|
||||
|
||||
WGPUSurfaceCapabilities surface_capabilities = {};
|
||||
wgpuSurfaceGetCapabilities(wgpu_surface, adapter, &surface_capabilities);
|
||||
|
||||
preferred_fmt = surface_capabilities.formats[0];
|
||||
preferred_fmt = SelectSurfaceFormat(surface_capabilities);
|
||||
#endif // IMGUI_IMPL_WEBGPU_BACKEND_WGPU
|
||||
|
||||
wgpu_surface_configuration.presentMode = WGPUPresentMode_Fifo;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user