34 CHECK(m_instanceHandle.Get() == XR_NULL_HANDLE);
38 XrInstanceCreateInfo createInfo{ XR_TYPE_INSTANCE_CREATE_INFO };
39 createInfo.enabledExtensionCount = (uint32_t)enabledExtensions.size();
40 createInfo.enabledExtensionNames = enabledExtensions.data();
41 createInfo.applicationInfo.applicationVersion = 1;
42 createInfo.applicationInfo.engineName[0] = 0;
43 createInfo.applicationInfo.engineVersion = 1;
44 createInfo.applicationInfo.apiVersion = XR_API_VERSION_1_0;
46 strcpy_s(createInfo.applicationInfo.applicationName, applicationName.c_str());
48 CHECK_XRCMD(xrCreateInstance(&createInfo, m_instanceHandle.Put(xrDestroyInstance)));
50 xr::g_dispatchTable.Initialize(m_instanceHandle.Get(), xrGetInstanceProcAddr);
66 uint32_t extensionCount;
67 CHECK_XRCMD(xrEnumerateInstanceExtensionProperties(
nullptr, 0, &extensionCount,
nullptr));
68 std::vector<XrExtensionProperties> extensionProperties(extensionCount, { XR_TYPE_EXTENSION_PROPERTIES });
69 CHECK_XRCMD(xrEnumerateInstanceExtensionProperties(
nullptr, extensionCount, &extensionCount, extensionProperties.data()));
71 std::vector<const char*> enabledExtensions;
74 auto EnableExtensionIfSupported = [&](
const char* extensionName) {
75 for (uint32_t i = 0; i < extensionCount; i++) {
76 if (strcmp(extensionProperties[i].extensionName, extensionName) == 0) {
77 enabledExtensions.push_back(extensionName);
85 CHECK(EnableExtensionIfSupported(XR_KHR_D3D11_ENABLE_EXTENSION_NAME));
87 return enabledExtensions;