소스 검색

Fix OpenXR on the Meta Quest: XR_KHR_loader_init_android is not reported as available (but it works anyway)

David Snopek 2 년 전
부모
커밋
aa5b42946c
2개의 변경된 파일6개의 추가작업 그리고 1개의 파일을 삭제
  1. 5 1
      modules/openxr/extensions/openxr_android_extension.cpp
  2. 1 0
      modules/openxr/extensions/openxr_android_extension.h

+ 5 - 1
modules/openxr/extensions/openxr_android_extension.cpp

@@ -47,11 +47,15 @@ OpenXRAndroidExtension *OpenXRAndroidExtension::get_singleton() {
 OpenXRAndroidExtension::OpenXRAndroidExtension(OpenXRAPI *p_openxr_api) :
 		OpenXRExtensionWrapper(p_openxr_api) {
 	singleton = this;
-	request_extensions[XR_KHR_LOADER_INIT_ANDROID_EXTENSION_NAME] = nullptr; // must be available
+	request_extensions[XR_KHR_LOADER_INIT_ANDROID_EXTENSION_NAME] = &loader_init_extension_available;
 	request_extensions[XR_KHR_ANDROID_CREATE_INSTANCE_EXTENSION_NAME] = &create_instance_extension_available;
 }
 
 void OpenXRAndroidExtension::on_before_instance_created() {
+	if (!loader_init_extension_available) {
+		print_line("OpenXR: XR_KHR_loader_init_android is not reported as available - trying to initialize anyway...");
+	}
+
 	EXT_INIT_XR_FUNC(xrInitializeLoaderKHR);
 
 	JNIEnv *env = get_jni_env();

+ 1 - 0
modules/openxr/extensions/openxr_android_extension.h

@@ -48,6 +48,7 @@ public:
 private:
 	static OpenXRAndroidExtension *singleton;
 
+	bool loader_init_extension_available = false;
 	bool create_instance_extension_available = false;
 
 	// Initialize the loader