OpenXRInitializeLoader_Android.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include <AzCore/Android/AndroidEnv.h>
  9. #include <OpenXRVk/OpenXRVkUtils.h>
  10. #include <OpenXRInitializeLoader_Android.h>
  11. namespace OpenXRVk::Platform
  12. {
  13. bool OpenXRInitializeLoader()
  14. {
  15. AZ::Android::AndroidEnv* androidEnv = AZ::Android::AndroidEnv::Get();
  16. AZ_Assert(androidEnv != nullptr, "Invalid android environment");
  17. PFN_xrInitializeLoaderKHR initializeLoader = nullptr;
  18. XrResult result = xrGetInstanceProcAddr(
  19. XR_NULL_HANDLE, "xrInitializeLoaderKHR",
  20. reinterpret_cast<PFN_xrVoidFunction*>(&initializeLoader));
  21. if (IsError(result))
  22. {
  23. return false;
  24. }
  25. XrLoaderInitInfoAndroidKHR loaderInitInfoAndroid;
  26. memset(&loaderInitInfoAndroid, 0, sizeof(loaderInitInfoAndroid));
  27. loaderInitInfoAndroid.type = XR_TYPE_LOADER_INIT_INFO_ANDROID_KHR;
  28. loaderInitInfoAndroid.next = nullptr;
  29. loaderInitInfoAndroid.applicationVM = androidEnv->GetActivityJavaVM();
  30. loaderInitInfoAndroid.applicationContext = androidEnv->GetActivityRef();
  31. result = initializeLoader(reinterpret_cast<const XrLoaderInitInfoBaseHeaderKHR*>(&loaderInitInfoAndroid));
  32. if (IsError(result))
  33. {
  34. return false;
  35. }
  36. return true;
  37. }
  38. }