26 XrSwapchainCreateFlags createFlags,
27 XrSwapchainUsageFlags usageFlags) {
30 swapchain.
Width = width;
34 XrSwapchainCreateInfo swapchainCreateInfo{ XR_TYPE_SWAPCHAIN_CREATE_INFO };
35 swapchainCreateInfo.arraySize = arraySize;
36 swapchainCreateInfo.format = format;
37 swapchainCreateInfo.width = width;
38 swapchainCreateInfo.height = height;
39 swapchainCreateInfo.mipCount = 1;
40 swapchainCreateInfo.faceCount = 1;
41 swapchainCreateInfo.sampleCount = sampleCount;
42 swapchainCreateInfo.createFlags = createFlags;
43 swapchainCreateInfo.usageFlags = usageFlags;
45 CHECK_XRCMD(xrCreateSwapchain(session, &swapchainCreateInfo, swapchain.
Handle.
Put(xrDestroySwapchain)));
50 swapchain.
Images.resize(chainLength, { XR_TYPE_SWAPCHAIN_IMAGE_D3D11_KHR });
52 (uint32_t)swapchain.
Images.size(),
54 reinterpret_cast<XrSwapchainImageBaseHeader*
>(swapchain.
Images.data())));
60 uint32_t swapchainImageIndex;
61 XrSwapchainImageAcquireInfo acquireInfo{ XR_TYPE_SWAPCHAIN_IMAGE_ACQUIRE_INFO };
62 CHECK_XRCMD(xrAcquireSwapchainImage(handle, &acquireInfo, &swapchainImageIndex));
64 XrSwapchainImageWaitInfo waitInfo{ XR_TYPE_SWAPCHAIN_IMAGE_WAIT_INFO };
65 waitInfo.timeout = XR_INFINITE_DURATION;
66 CHECK_XRCMD(xrWaitSwapchainImage(handle, &waitInfo));
68 return swapchainImageIndex;
77 XrSystemProperties systemProperties{ XR_TYPE_SYSTEM_PROPERTIES };
83 ColorSwapchainPixelFormat = colorSwapchainFormat;
84 DepthSwapchainPixelFormat = depthSwapchainFormat;
90 CHECK(viewCount == 2);
94 const uint32_t textureArraySize = 1;
103 XR_SWAPCHAIN_USAGE_SAMPLED_BIT | XR_SWAPCHAIN_USAGE_COLOR_ATTACHMENT_BIT);
107 depthSwapchainFormat,
113 XR_SWAPCHAIN_USAGE_SAMPLED_BIT | XR_SWAPCHAIN_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT);
SwapchainD3D11 CreateSwapchainD3D11(XrSession session, DXGI_FORMAT format, uint32_t width, uint32_t height, uint32_t arraySize, uint32_t sampleCount, XrSwapchainCreateFlags createFlags, XrSwapchainUsageFlags usageFlags)