Hello Guest

BGFX: 'Failed to create swap chain'

  • 1 Replies
  • 660 Views
BGFX: 'Failed to create swap chain'
« on: December 15, 2019, 16:58:47 »
I'm trying to create a BGFX frame buffer from a window created using GLFW, using bgfx_create_frame_buffer_from_nwh, but this always results in the error Fatal error 2: Failed to create swap chain. C:\projects\bgfx\src\renderer_d3d11.cpp line 4632 being thrown from the external BGFX thread (I set up a custom callback to catch it). The ultimate aim here is to create buffers for multiple windows, but this also fails in the case of a single window.
 
The relevant code:
Code: [Select]
long nwh;
switch (Platform.get()) {
case LINUX: nwh = GLFWNativeX11.glfwGetX11Window(window); break;
case MACOSX: nwh = GLFWNativeCocoa.glfwGetCocoaWindow(window); break;
case WINDOWS: nwh = GLFWNativeWin32.glfwGetWin32Window(window); break;
default: nwh = NULL; break;
}
log("Creating framebuffer for view "+view+" with window handle "+nwh);
short frameBuffer = bgfx_create_frame_buffer_from_nwh(nwh, width, height, BGFX_TEXTURE_FORMAT_BGRA8, BGFX_TEXTURE_FORMAT_D24S8);

This is after calling bgfx_set_platform_data and bgfx_init, and after the GLFW window has been created.

Getting capabilities from BGFX shows true for BGFX_CAPS_SWAP_CHAIN and for BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER on the relevant format(s). Not sure what I'm doing wrong here, or if this is even the correct approach for rendering to multiple GLFW windows with BGFX.

Re: BGFX: 'Failed to create swap chain'
« Reply #1 on: December 17, 2019, 17:43:40 »
Never mind, I figured it out. For future reference: you need to set the platformdata's nwh field to the native window handle of a valid window (doesn't matter which one) before trying to create framebuffers.