diff --git a/Chapter1/CMakeLists.txt b/Chapter1/CMakeLists.txt index 75452d1..1c6277d 100644 --- a/Chapter1/CMakeLists.txt +++ b/Chapter1/CMakeLists.txt @@ -20,21 +20,20 @@ include(FetchContent) # openxr_loader - From github.com/KhronosGroup set(BUILD_API_LAYERS - ON - CACHE INTERNAL "Use OpenXR layers" + ON + CACHE INTERNAL "Use OpenXR layers" ) set(BUILD_TESTS - OFF - CACHE INTERNAL "Build tests" + OFF + CACHE INTERNAL "Build tests" ) FetchContent_Declare( OpenXR - EXCLUDE_FROM_ALL - DOWNLOAD_EXTRACT_TIMESTAMP + EXCLUDE_FROM_ALL DOWNLOAD_EXTRACT_TIMESTAMP URL_HASH MD5=f52248ef83da9134bec2b2d8e0970677 URL https://github.com/KhronosGroup/OpenXR-SDK-Source/archive/refs/tags/release-1.1.49.tar.gz - SOURCE_DIR - openxr + SOURCE_DIR + openxr ) FetchContent_MakeAvailable(OpenXR) @@ -69,10 +68,8 @@ if(ANDROID) # Android add_library(${PROJECT_NAME} SHARED ${SOURCES} ${HEADERS}) add_dependencies(${PROJECT_NAME} XrApiLayer_core_validation) target_include_directories( - ${PROJECT_NAME} - PRIVATE - # In this repo - ../Common/ + ${PROJECT_NAME} PRIVATE # In this repo + ../Common/ ) # export ANativeActivity_onCreate for java to call. @@ -128,10 +125,8 @@ else() # Windows / Linux endif() target_include_directories( - ${PROJECT_NAME} - PRIVATE - # In this repo - ../Common/ + ${PROJECT_NAME} PRIVATE # In this repo + ../Common/ ) target_link_libraries(${PROJECT_NAME} openxr_loader) add_dependencies(${PROJECT_NAME} XrApiLayer_core_validation) diff --git a/Chapter1/main.cpp b/Chapter1/main.cpp index faed373..b50dbdc 100644 --- a/Chapter1/main.cpp +++ b/Chapter1/main.cpp @@ -100,7 +100,7 @@ class OpenXRTutorial { int events = 0; // The timeout depends on whether the application is active. const int timeoutMilliseconds = (!androidAppState.resumed && !m_sessionRunning && androidApp->destroyRequested == 0) ? -1 : 0; - if (ALooper_pollOnce(timeoutMilliseconds, nullptr, &events, (void**)&source) >= 0) { + if (ALooper_pollOnce(timeoutMilliseconds, nullptr, &events, (void **)&source) >= 0) { if (source != nullptr) { source->process(androidApp, source); } diff --git a/Chapter2/CMakeLists.txt b/Chapter2/CMakeLists.txt index 3d964ed..d181a44 100644 --- a/Chapter2/CMakeLists.txt +++ b/Chapter2/CMakeLists.txt @@ -20,21 +20,20 @@ include(FetchContent) # openxr_loader - From github.com/KhronosGroup set(BUILD_API_LAYERS - ON - CACHE INTERNAL "Use OpenXR layers" + ON + CACHE INTERNAL "Use OpenXR layers" ) set(BUILD_TESTS - OFF - CACHE INTERNAL "Build tests" + OFF + CACHE INTERNAL "Build tests" ) FetchContent_Declare( OpenXR - EXCLUDE_FROM_ALL - DOWNLOAD_EXTRACT_TIMESTAMP + EXCLUDE_FROM_ALL DOWNLOAD_EXTRACT_TIMESTAMP URL_HASH MD5=f52248ef83da9134bec2b2d8e0970677 URL https://github.com/KhronosGroup/OpenXR-SDK-Source/archive/refs/tags/release-1.1.49.tar.gz - SOURCE_DIR - openxr + SOURCE_DIR + openxr ) FetchContent_MakeAvailable(OpenXR) diff --git a/Chapter2/main.cpp b/Chapter2/main.cpp index 9937dc7..85ec89d 100644 --- a/Chapter2/main.cpp +++ b/Chapter2/main.cpp @@ -181,9 +181,9 @@ class OpenXRTutorial { OPENXR_CHECK(xrGetInstanceProperties(m_xrInstance, &instanceProperties), "Failed to get InstanceProperties."); XR_TUT_LOG("OpenXR Runtime: " << instanceProperties.runtimeName << " - " - << XR_VERSION_MAJOR(instanceProperties.runtimeVersion) << "." - << XR_VERSION_MINOR(instanceProperties.runtimeVersion) << "." - << XR_VERSION_PATCH(instanceProperties.runtimeVersion)); + << XR_VERSION_MAJOR(instanceProperties.runtimeVersion) << "." + << XR_VERSION_MINOR(instanceProperties.runtimeVersion) << "." + << XR_VERSION_PATCH(instanceProperties.runtimeVersion)); // XR_DOCS_TAG_END_GetInstanceProperties } @@ -288,7 +288,7 @@ class OpenXRTutorial { XrEventDataReferenceSpaceChangePending *referenceSpaceChangePending = reinterpret_cast(&eventData); XR_TUT_LOG("OPENXR: Reference Space Change pending for Session: " << referenceSpaceChangePending->session); if (referenceSpaceChangePending->session != m_session) { - XR_TUT_LOG("XrEventDataReferenceSpaceChangePending for unknown Session"); + XR_TUT_LOG("XrEventDataReferenceSpaceChangePending for unknown Session"); break; } break; @@ -401,7 +401,7 @@ class OpenXRTutorial { int events = 0; // The timeout depends on whether the application is active. const int timeoutMilliseconds = (!androidAppState.resumed && !m_sessionRunning && androidApp->destroyRequested == 0) ? -1 : 0; - if (ALooper_pollOnce(timeoutMilliseconds, nullptr, &events, (void**)&source) >= 0) { + if (ALooper_pollOnce(timeoutMilliseconds, nullptr, &events, (void **)&source) >= 0) { if (source != nullptr) { source->process(androidApp, source); } diff --git a/Chapter3/CMakeLists.txt b/Chapter3/CMakeLists.txt index a041e11..da28bad 100644 --- a/Chapter3/CMakeLists.txt +++ b/Chapter3/CMakeLists.txt @@ -20,21 +20,20 @@ include(FetchContent) # openxr_loader - From github.com/KhronosGroup set(BUILD_API_LAYERS - ON - CACHE INTERNAL "Use OpenXR layers" + ON + CACHE INTERNAL "Use OpenXR layers" ) set(BUILD_TESTS - OFF - CACHE INTERNAL "Build tests" + OFF + CACHE INTERNAL "Build tests" ) FetchContent_Declare( OpenXR - EXCLUDE_FROM_ALL - DOWNLOAD_EXTRACT_TIMESTAMP + EXCLUDE_FROM_ALL DOWNLOAD_EXTRACT_TIMESTAMP URL_HASH MD5=f52248ef83da9134bec2b2d8e0970677 URL https://github.com/KhronosGroup/OpenXR-SDK-Source/archive/refs/tags/release-1.1.49.tar.gz - SOURCE_DIR - openxr + SOURCE_DIR + openxr ) FetchContent_MakeAvailable(OpenXR) diff --git a/Chapter3/main.cpp b/Chapter3/main.cpp index 85617f3..7f8b79e 100644 --- a/Chapter3/main.cpp +++ b/Chapter3/main.cpp @@ -223,9 +223,9 @@ class OpenXRTutorial { OPENXR_CHECK(xrGetInstanceProperties(m_xrInstance, &instanceProperties), "Failed to get InstanceProperties."); XR_TUT_LOG("OpenXR Runtime: " << instanceProperties.runtimeName << " - " - << XR_VERSION_MAJOR(instanceProperties.runtimeVersion) << "." - << XR_VERSION_MINOR(instanceProperties.runtimeVersion) << "." - << XR_VERSION_PATCH(instanceProperties.runtimeVersion)); + << XR_VERSION_MAJOR(instanceProperties.runtimeVersion) << "." + << XR_VERSION_MINOR(instanceProperties.runtimeVersion) << "." + << XR_VERSION_PATCH(instanceProperties.runtimeVersion)); // XR_DOCS_TAG_END_GetInstanceProperties } @@ -525,7 +525,7 @@ class OpenXRTutorial { XrEventDataReferenceSpaceChangePending *referenceSpaceChangePending = reinterpret_cast(&eventData); XR_TUT_LOG("OPENXR: Reference Space Change pending for Session: " << referenceSpaceChangePending->session); if (referenceSpaceChangePending->session != m_session) { - XR_TUT_LOG("XrEventDataReferenceSpaceChangePending for unknown Session"); + XR_TUT_LOG("XrEventDataReferenceSpaceChangePending for unknown Session"); break; } break; @@ -604,7 +604,7 @@ class OpenXRTutorial { // XR_DOCS_TAG_END_EnumerateSwapchainFormats // XR_DOCS_TAG_BEGIN_ResizeSwapchainInfos - //Resize the SwapchainInfo to match the number of view in the View Configuration. + // Resize the SwapchainInfo to match the number of view in the View Configuration. m_colorSwapchainInfos.resize(m_viewConfigurationViews.size()); m_depthSwapchainInfos.resize(m_viewConfigurationViews.size()); // XR_DOCS_TAG_END_ResizeSwapchainInfos @@ -961,7 +961,7 @@ class OpenXRTutorial { int events = 0; // The timeout depends on whether the application is active. const int timeoutMilliseconds = (!androidAppState.resumed && !m_sessionRunning && androidApp->destroyRequested == 0) ? -1 : 0; - if (ALooper_pollOnce(timeoutMilliseconds, nullptr, &events, (void**)&source) >= 0) { + if (ALooper_pollOnce(timeoutMilliseconds, nullptr, &events, (void **)&source) >= 0) { if (source != nullptr) { source->process(androidApp, source); } diff --git a/Chapter4/CMakeLists.txt b/Chapter4/CMakeLists.txt index a4f502c..312e9e0 100644 --- a/Chapter4/CMakeLists.txt +++ b/Chapter4/CMakeLists.txt @@ -20,21 +20,20 @@ include(FetchContent) # openxr_loader - From github.com/KhronosGroup set(BUILD_API_LAYERS - ON - CACHE INTERNAL "Use OpenXR layers" + ON + CACHE INTERNAL "Use OpenXR layers" ) set(BUILD_TESTS - OFF - CACHE INTERNAL "Build tests" + OFF + CACHE INTERNAL "Build tests" ) FetchContent_Declare( OpenXR - EXCLUDE_FROM_ALL - DOWNLOAD_EXTRACT_TIMESTAMP + EXCLUDE_FROM_ALL DOWNLOAD_EXTRACT_TIMESTAMP URL_HASH MD5=f52248ef83da9134bec2b2d8e0970677 URL https://github.com/KhronosGroup/OpenXR-SDK-Source/archive/refs/tags/release-1.1.49.tar.gz - SOURCE_DIR - openxr + SOURCE_DIR + openxr ) FetchContent_MakeAvailable(OpenXR) diff --git a/Chapter4/main.cpp b/Chapter4/main.cpp index 2d026af..8a20097 100644 --- a/Chapter4/main.cpp +++ b/Chapter4/main.cpp @@ -248,9 +248,9 @@ class OpenXRTutorial { OPENXR_CHECK(xrGetInstanceProperties(m_xrInstance, &instanceProperties), "Failed to get InstanceProperties."); XR_TUT_LOG("OpenXR Runtime: " << instanceProperties.runtimeName << " - " - << XR_VERSION_MAJOR(instanceProperties.runtimeVersion) << "." - << XR_VERSION_MINOR(instanceProperties.runtimeVersion) << "." - << XR_VERSION_PATCH(instanceProperties.runtimeVersion)); + << XR_VERSION_MAJOR(instanceProperties.runtimeVersion) << "." + << XR_VERSION_MINOR(instanceProperties.runtimeVersion) << "." + << XR_VERSION_PATCH(instanceProperties.runtimeVersion)); // XR_DOCS_TAG_END_GetInstanceProperties } @@ -673,7 +673,7 @@ class OpenXRTutorial { XrVector3f color = {pseudorandom_distribution(pseudo_random_generator), pseudorandom_distribution(pseudo_random_generator), pseudorandom_distribution(pseudo_random_generator)}; m_blocks.push_back({{q, {x, y, z}}, {0.095f, 0.095f, 0.095f}, color}); if (m_blocks.size() > m_maxBlockCount) { - m_blocks.pop_front(); + m_blocks.pop_front(); } } } @@ -735,7 +735,7 @@ class OpenXRTutorial { XrEventDataReferenceSpaceChangePending *referenceSpaceChangePending = reinterpret_cast(&eventData); XR_TUT_LOG("OPENXR: Reference Space Change pending for Session: " << referenceSpaceChangePending->session); if (referenceSpaceChangePending->session != m_session) { - XR_TUT_LOG("XrEventDataReferenceSpaceChangePending for unknown Session"); + XR_TUT_LOG("XrEventDataReferenceSpaceChangePending for unknown Session"); break; } break; @@ -901,8 +901,8 @@ class OpenXRTutorial { XrQuaternionf q = {0.0f, 0.0f, 0.0f, 1.0f}; XrVector3f color = {pseudorandom_distribution(pseudo_random_generator), pseudorandom_distribution(pseudo_random_generator), pseudorandom_distribution(pseudo_random_generator)}; m_blocks.push_back({{q, FixPosition(m_handPose[i].position)}, {0.095f, 0.095f, 0.095f}, color}); - while ( m_blocks.size() > m_maxBlockCount) { - m_blocks.pop_front(); + while (m_blocks.size() > m_maxBlockCount) { + m_blocks.pop_front(); } } } @@ -951,7 +951,7 @@ class OpenXRTutorial { // XR_DOCS_TAG_END_EnumerateSwapchainFormats // XR_DOCS_TAG_BEGIN_ResizeSwapchainInfos - //Resize the SwapchainInfo to match the number of view in the View Configuration. + // Resize the SwapchainInfo to match the number of view in the View Configuration. m_colorSwapchainInfos.resize(m_viewConfigurationViews.size()); m_depthSwapchainInfos.resize(m_viewConfigurationViews.size()); // XR_DOCS_TAG_END_ResizeSwapchainInfos @@ -1332,7 +1332,7 @@ class OpenXRTutorial { int events = 0; // The timeout depends on whether the application is active. const int timeoutMilliseconds = (!androidAppState.resumed && !m_sessionRunning && androidApp->destroyRequested == 0) ? -1 : 0; - if (ALooper_pollOnce(timeoutMilliseconds, nullptr, &events, (void**)&source) >= 0) { + if (ALooper_pollOnce(timeoutMilliseconds, nullptr, &events, (void **)&source) >= 0) { if (source != nullptr) { source->process(androidApp, source); } diff --git a/Chapter5/CMakeLists.txt b/Chapter5/CMakeLists.txt index c209051..4884358 100644 --- a/Chapter5/CMakeLists.txt +++ b/Chapter5/CMakeLists.txt @@ -20,21 +20,20 @@ include(FetchContent) # openxr_loader - From github.com/KhronosGroup set(BUILD_API_LAYERS - ON - CACHE INTERNAL "Use OpenXR layers" + ON + CACHE INTERNAL "Use OpenXR layers" ) set(BUILD_TESTS - OFF - CACHE INTERNAL "Build tests" + OFF + CACHE INTERNAL "Build tests" ) FetchContent_Declare( OpenXR - EXCLUDE_FROM_ALL - DOWNLOAD_EXTRACT_TIMESTAMP + EXCLUDE_FROM_ALL DOWNLOAD_EXTRACT_TIMESTAMP URL_HASH MD5=f52248ef83da9134bec2b2d8e0970677 URL https://github.com/KhronosGroup/OpenXR-SDK-Source/archive/refs/tags/release-1.1.49.tar.gz - SOURCE_DIR - openxr + SOURCE_DIR + openxr ) FetchContent_MakeAvailable(OpenXR) diff --git a/Chapter5/main.cpp b/Chapter5/main.cpp index 96f4f9c..0968be5 100644 --- a/Chapter5/main.cpp +++ b/Chapter5/main.cpp @@ -272,9 +272,9 @@ class OpenXRTutorial { OPENXR_CHECK(xrGetInstanceProperties(m_xrInstance, &instanceProperties), "Failed to get InstanceProperties."); XR_TUT_LOG("OpenXR Runtime: " << instanceProperties.runtimeName << " - " - << XR_VERSION_MAJOR(instanceProperties.runtimeVersion) << "." - << XR_VERSION_MINOR(instanceProperties.runtimeVersion) << "." - << XR_VERSION_PATCH(instanceProperties.runtimeVersion)); + << XR_VERSION_MAJOR(instanceProperties.runtimeVersion) << "." + << XR_VERSION_MINOR(instanceProperties.runtimeVersion) << "." + << XR_VERSION_PATCH(instanceProperties.runtimeVersion)); // XR_DOCS_TAG_END_GetInstanceProperties } @@ -784,7 +784,7 @@ class OpenXRTutorial { XrEventDataReferenceSpaceChangePending *referenceSpaceChangePending = reinterpret_cast(&eventData); XR_TUT_LOG("OPENXR: Reference Space Change pending for Session: " << referenceSpaceChangePending->session); if (referenceSpaceChangePending->session != m_session) { - XR_TUT_LOG("XrEventDataReferenceSpaceChangePending for unknown Session"); + XR_TUT_LOG("XrEventDataReferenceSpaceChangePending for unknown Session"); break; } break; @@ -1004,7 +1004,7 @@ class OpenXRTutorial { // XR_DOCS_TAG_END_EnumerateSwapchainFormats // XR_DOCS_TAG_BEGIN_ResizeSwapchainInfos - //Resize the SwapchainInfo to match the number of view in the View Configuration. + // Resize the SwapchainInfo to match the number of view in the View Configuration. m_colorSwapchainInfos.resize(m_viewConfigurationViews.size()); m_depthSwapchainInfos.resize(m_viewConfigurationViews.size()); // XR_DOCS_TAG_END_ResizeSwapchainInfos @@ -1420,7 +1420,7 @@ class OpenXRTutorial { int events = 0; // The timeout depends on whether the application is active. const int timeoutMilliseconds = (!androidAppState.resumed && !m_sessionRunning && androidApp->destroyRequested == 0) ? -1 : 0; - if (ALooper_pollOnce(timeoutMilliseconds, nullptr, &events, (void**)&source) >= 0) { + if (ALooper_pollOnce(timeoutMilliseconds, nullptr, &events, (void **)&source) >= 0) { if (source != nullptr) { source->process(androidApp, source); } diff --git a/Chapter6_1_Multiview/Chapter6/CMakeLists.txt b/Chapter6_1_Multiview/Chapter6/CMakeLists.txt index be18e43..c63108d 100644 --- a/Chapter6_1_Multiview/Chapter6/CMakeLists.txt +++ b/Chapter6_1_Multiview/Chapter6/CMakeLists.txt @@ -20,21 +20,20 @@ include(FetchContent) # openxr_loader - From github.com/KhronosGroup set(BUILD_API_LAYERS - ON - CACHE INTERNAL "Use OpenXR layers" + ON + CACHE INTERNAL "Use OpenXR layers" ) set(BUILD_TESTS - OFF - CACHE INTERNAL "Build tests" + OFF + CACHE INTERNAL "Build tests" ) FetchContent_Declare( OpenXR - EXCLUDE_FROM_ALL - DOWNLOAD_EXTRACT_TIMESTAMP + EXCLUDE_FROM_ALL DOWNLOAD_EXTRACT_TIMESTAMP URL_HASH MD5=f52248ef83da9134bec2b2d8e0970677 URL https://github.com/KhronosGroup/OpenXR-SDK-Source/archive/refs/tags/release-1.1.49.tar.gz - SOURCE_DIR - openxr + SOURCE_DIR + openxr ) FetchContent_MakeAvailable(OpenXR) diff --git a/Chapter6_1_Multiview/Chapter6/main.cpp b/Chapter6_1_Multiview/Chapter6/main.cpp index a4cf601..fe58842 100644 --- a/Chapter6_1_Multiview/Chapter6/main.cpp +++ b/Chapter6_1_Multiview/Chapter6/main.cpp @@ -246,9 +246,9 @@ class OpenXRTutorial { OPENXR_CHECK(xrGetInstanceProperties(m_xrInstance, &instanceProperties), "Failed to get InstanceProperties."); XR_TUT_LOG("OpenXR Runtime: " << instanceProperties.runtimeName << " - " - << XR_VERSION_MAJOR(instanceProperties.runtimeVersion) << "." - << XR_VERSION_MINOR(instanceProperties.runtimeVersion) << "." - << XR_VERSION_PATCH(instanceProperties.runtimeVersion)); + << XR_VERSION_MAJOR(instanceProperties.runtimeVersion) << "." + << XR_VERSION_MINOR(instanceProperties.runtimeVersion) << "." + << XR_VERSION_PATCH(instanceProperties.runtimeVersion)); // XR_DOCS_TAG_END_GetInstanceProperties } @@ -731,7 +731,7 @@ class OpenXRTutorial { XrEventDataReferenceSpaceChangePending *referenceSpaceChangePending = reinterpret_cast(&eventData); XR_TUT_LOG("OPENXR: Reference Space Change pending for Session: " << referenceSpaceChangePending->session); if (referenceSpaceChangePending->session != m_session) { - XR_TUT_LOG("XrEventDataReferenceSpaceChangePending for unknown Session"); + XR_TUT_LOG("XrEventDataReferenceSpaceChangePending for unknown Session"); break; } break; @@ -1035,10 +1035,10 @@ class OpenXRTutorial { void DestroySwapchains() { // XR_DOCS_TAG_BEGIN_DestroySwapchains // Destroy the color and depth image views from GraphicsAPI. - for (void*& imageView : m_colorSwapchainInfo.imageViews) { + for (void *&imageView : m_colorSwapchainInfo.imageViews) { m_graphicsAPI->DestroyImageView(imageView); } - for (void*& imageView : m_depthSwapchainInfo.imageViews) { + for (void *&imageView : m_depthSwapchainInfo.imageViews) { m_graphicsAPI->DestroyImageView(imageView); } @@ -1059,7 +1059,7 @@ class OpenXRTutorial { // XR_DOCS_TAG_BEGIN_RenderCuboid2 XrMatrix4x4f_CreateTranslationRotationScale(&cameraConstants.model, &pose.position, &pose.orientation, &scale); - const uint32_t viewCount = 2; // This will only work for stereo rendering. + const uint32_t viewCount = 2; // This will only work for stereo rendering. for (uint32_t i = 0; i < viewCount; i++) { XrMatrix4x4f_Multiply(&cameraConstants.modelViewProj[i], &cameraConstants.viewProj[i], &cameraConstants.model); } @@ -1076,7 +1076,7 @@ class OpenXRTutorial { m_graphicsAPI->SetVertexBuffers(&m_vertexBuffer, 1); m_graphicsAPI->SetIndexBuffer(m_indexBuffer); - m_graphicsAPI->DrawIndexed(36, m_apiType == D3D11 ? 2 : 1); // For D3D11, use instanced rendering for multiview. + m_graphicsAPI->DrawIndexed(36, m_apiType == D3D11 ? 2 : 1); // For D3D11, use instanced rendering for multiview. renderCuboidIndex++; // XR_DOCS_TAG_END_RenderCuboid2 @@ -1174,7 +1174,7 @@ class OpenXRTutorial { // This also associates the swapchain image with this layer projection view. // Per view in the view configuration: for (uint32_t i = 0; i < viewCount; i++) { - renderLayerInfo.layerProjectionViews[i] = { XR_TYPE_COMPOSITION_LAYER_PROJECTION_VIEW }; + renderLayerInfo.layerProjectionViews[i] = {XR_TYPE_COMPOSITION_LAYER_PROJECTION_VIEW}; renderLayerInfo.layerProjectionViews[i].pose = views[i].pose; renderLayerInfo.layerProjectionViews[i].fov = views[i].fov; renderLayerInfo.layerProjectionViews[i].subImage.swapchain = m_colorSwapchainInfo.swapchain; @@ -1209,7 +1209,7 @@ class OpenXRTutorial { XrMatrix4x4f proj; XrMatrix4x4f_CreateProjectionFov(&proj, m_apiType, views[i].fov, nearZ, farZ); XrMatrix4x4f toView; - XrVector3f scale1m{ 1.0f, 1.0f, 1.0f }; + XrVector3f scale1m{1.0f, 1.0f, 1.0f}; XrMatrix4x4f_CreateTranslationRotationScale(&toView, &views[i].pose.position, &views[i].pose.orientation, &scale1m); XrMatrix4x4f view; XrMatrix4x4f_InvertRigidBody(&view, &toView); @@ -1323,7 +1323,7 @@ class OpenXRTutorial { int events = 0; // The timeout depends on whether the application is active. const int timeoutMilliseconds = (!androidAppState.resumed && !m_sessionRunning && androidApp->destroyRequested == 0) ? -1 : 0; - if (ALooper_pollOnce(timeoutMilliseconds, nullptr, &events, (void**)&source) >= 0) { + if (ALooper_pollOnce(timeoutMilliseconds, nullptr, &events, (void **)&source) >= 0) { if (source != nullptr) { source->process(androidApp, source); } diff --git a/Chapter6_1_Multiview/Common/DebugOutput.h b/Chapter6_1_Multiview/Common/DebugOutput.h index 35c748f..f35fec8 100644 --- a/Chapter6_1_Multiview/Common/DebugOutput.h +++ b/Chapter6_1_Multiview/Common/DebugOutput.h @@ -171,22 +171,24 @@ class DebugOutput { } }; - #endif #ifdef __ANDROID__ #include + #include #define XR_TUT_LOG_TAG "openxr_tutorial" -#define XR_TUT_LOG(...) { \ +#define XR_TUT_LOG(...) \ + { \ std::ostringstream ostr; \ - ostr<<__VA_ARGS__; \ + ostr << __VA_ARGS__; \ __android_log_write(ANDROID_LOG_DEBUG, XR_TUT_LOG_TAG, ostr.str().c_str()); \ } -#define XR_TUT_LOG_ERROR(...) { \ +#define XR_TUT_LOG_ERROR(...) \ + { \ std::ostringstream ostr; \ - ostr<<__VA_ARGS__; \ + ostr << __VA_ARGS__; \ __android_log_write(ANDROID_LOG_ERROR, XR_TUT_LOG_TAG, ostr.str().c_str()); \ } #else diff --git a/Chapter6_1_Multiview/Common/GraphicsAPI.h b/Chapter6_1_Multiview/Common/GraphicsAPI.h index cdc4683..d830acd 100644 --- a/Chapter6_1_Multiview/Common/GraphicsAPI.h +++ b/Chapter6_1_Multiview/Common/GraphicsAPI.h @@ -72,6 +72,7 @@ #if defined(XR_USE_GRAPHICS_API_D3D12) #include #include + #include "d3dx12.h" #endif diff --git a/Chapter6_1_Multiview/Common/GraphicsAPI_D3D11.cpp b/Chapter6_1_Multiview/Common/GraphicsAPI_D3D11.cpp index 59cac04..dc172d0 100644 --- a/Chapter6_1_Multiview/Common/GraphicsAPI_D3D11.cpp +++ b/Chapter6_1_Multiview/Common/GraphicsAPI_D3D11.cpp @@ -186,7 +186,7 @@ GraphicsAPI_D3D11::GraphicsAPI_D3D11() { IDXGIAdapter *adapter = nullptr; DXGI_ADAPTER_DESC adapterDesc = {}; - for(UINT i = 0; factory->EnumAdapters(i, &adapter) != DXGI_ERROR_NOT_FOUND; ++i) { + for (UINT i = 0; factory->EnumAdapters(i, &adapter) != DXGI_ERROR_NOT_FOUND; ++i) { adapter->GetDesc(&adapterDesc); break; } @@ -204,7 +204,7 @@ GraphicsAPI_D3D11::GraphicsAPI_D3D11(XrInstance m_xrInstance, XrSystemId systemI IDXGIAdapter *adapter = nullptr; DXGI_ADAPTER_DESC adapterDesc = {}; - for(UINT i = 0; factory->EnumAdapters(i, &adapter) != DXGI_ERROR_NOT_FOUND; ++i) { + for (UINT i = 0; factory->EnumAdapters(i, &adapter) != DXGI_ERROR_NOT_FOUND; ++i) { adapter->GetDesc(&adapterDesc); if (memcmp(&graphicsRequirements.adapterLuid, &adapterDesc.AdapterLuid, sizeof(LUID)) == 0) { break; // We have the matching adapter that OpenXR wants. @@ -216,10 +216,10 @@ GraphicsAPI_D3D11::GraphicsAPI_D3D11(XrInstance m_xrInstance, XrSystemId systemI D3D11_CHECK(D3D11CreateDevice(adapter, D3D_DRIVER_TYPE_UNKNOWN, 0, D3D11_CREATE_DEVICE_DEBUG, &graphicsRequirements.minFeatureLevel, 1, D3D11_SDK_VERSION, &device, nullptr, &immediateContext), "Failed to create D3D11 Device."); - device->QueryInterface( __uuidof(ID3D11Debug), (void**)&d3dDebug ); - d3dDebug->QueryInterface( __uuidof(ID3D11InfoQueue), (void**)&infoQueue ); - infoQueue->SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY_WARNING, true); - infoQueue->SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY_ERROR, true); + device->QueryInterface(__uuidof(ID3D11Debug), (void **)&d3dDebug); + d3dDebug->QueryInterface(__uuidof(ID3D11InfoQueue), (void **)&infoQueue); + infoQueue->SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY_WARNING, true); + infoQueue->SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY_ERROR, true); #if XR_TUTORIAL_ENABLE_MULTIVIEW D3D11_FEATURE_DATA_D3D11_OPTIONS3 opt3 = {}; @@ -270,7 +270,7 @@ void *GraphicsAPI_D3D11::GetDesktopSwapchainImage(void *swapchain, uint32_t inde return texture; } -void GraphicsAPI_D3D11::AcquireDesktopSwapchanImage(void *swapchain, uint32_t& index) { +void GraphicsAPI_D3D11::AcquireDesktopSwapchanImage(void *swapchain, uint32_t &index) { IDXGISwapChain3 *d3d11Swapchain = reinterpret_cast(swapchain); index = d3d11Swapchain->GetCurrentBackBufferIndex(); } @@ -862,7 +862,7 @@ void GraphicsAPI_D3D11::SetPipeline(void *pipeline) { blendDesc.IndependentBlendEnable = true; size_t i = 0; for (auto &blend : pipelineCI.colorBlendState.attachments) { - blendDesc.RenderTarget[i].RenderTargetWriteMask=0xFF; + blendDesc.RenderTarget[i].RenderTargetWriteMask = 0xFF; blendDesc.RenderTarget[i].BlendEnable = blend.blendEnable; blendDesc.RenderTarget[i].SrcBlend = ToD3D11_BLEND(blend.srcColorBlendFactor); blendDesc.RenderTarget[i].DestBlend = ToD3D11_BLEND(blend.dstColorBlendFactor); diff --git a/Chapter6_1_Multiview/Common/GraphicsAPI_D3D11.h b/Chapter6_1_Multiview/Common/GraphicsAPI_D3D11.h index d3210a8..cfebaca 100644 --- a/Chapter6_1_Multiview/Common/GraphicsAPI_D3D11.h +++ b/Chapter6_1_Multiview/Common/GraphicsAPI_D3D11.h @@ -84,8 +84,8 @@ class GraphicsAPI_D3D11 : public GraphicsAPI { IDXGIFactory4* factory = nullptr; ID3D11Device* device = nullptr; - ID3D11Debug *d3dDebug=nullptr; - ID3D11InfoQueue *infoQueue=nullptr; + ID3D11Debug* d3dDebug = nullptr; + ID3D11InfoQueue* infoQueue = nullptr; ID3D11DeviceContext* immediateContext = nullptr; PFN_xrGetD3D11GraphicsRequirementsKHR xrGetD3D11GraphicsRequirementsKHR = nullptr; diff --git a/Chapter6_1_Multiview/Common/GraphicsAPI_D3D12.cpp b/Chapter6_1_Multiview/Common/GraphicsAPI_D3D12.cpp index 97b0b1d..6e8eefd 100644 --- a/Chapter6_1_Multiview/Common/GraphicsAPI_D3D12.cpp +++ b/Chapter6_1_Multiview/Common/GraphicsAPI_D3D12.cpp @@ -163,7 +163,7 @@ GraphicsAPI_D3D12::GraphicsAPI_D3D12() { IDXGIAdapter *adapter = nullptr; DXGI_ADAPTER_DESC adapterDesc = {}; - for(UINT i = 0; factory->EnumAdapters(i, &adapter) != DXGI_ERROR_NOT_FOUND; ++i) { + for (UINT i = 0; factory->EnumAdapters(i, &adapter) != DXGI_ERROR_NOT_FOUND; ++i) { adapter->GetDesc(&adapterDesc); break; } @@ -241,7 +241,7 @@ GraphicsAPI_D3D12::GraphicsAPI_D3D12(XrInstance m_xrInstance, XrSystemId systemI IDXGIAdapter *adapter = nullptr; DXGI_ADAPTER_DESC adapterDesc = {}; - for(UINT i = 0; factory->EnumAdapters(i, &adapter) != DXGI_ERROR_NOT_FOUND; ++i) { + for (UINT i = 0; factory->EnumAdapters(i, &adapter) != DXGI_ERROR_NOT_FOUND; ++i) { adapter->GetDesc(&adapterDesc); if (memcmp(&graphicsRequirements.adapterLuid, &adapterDesc.AdapterLuid, sizeof(LUID)) == 0) { break; // We have the matching adapter that OpenXR wants. @@ -1001,23 +1001,21 @@ void *GraphicsAPI_D3D12::CreatePipeline(const PipelineCreateInfo &pipelineCI) { #if XR_TUTORIAL_ENABLE_MULTIVIEW if (pipelineCI.viewMask != 0) { - //Pipeline Extensions + // Pipeline Extensions CD3DX12_PIPELINE_STATE_STREAM1 gpss1(GPSD); D3D12_VIEW_INSTANCING_DESC viewInstancingDesc; std::vector viewInstanceLocations; uint32_t viewIndex = 1, viewCount = 0; - while (viewIndex != 0) - { + while (viewIndex != 0) { viewIndex = (pipelineCI.viewMask >> viewCount & 0x00000001); viewCount += viewIndex; } viewInstancingDesc.ViewInstanceCount = viewCount; viewInstanceLocations.resize(viewInstancingDesc.ViewInstanceCount); - for (size_t i = 0; i < viewInstanceLocations.size(); i++) - { + for (size_t i = 0; i < viewInstanceLocations.size(); i++) { viewInstanceLocations[i].RenderTargetArrayIndex = static_cast(i); viewInstanceLocations[i].ViewportArrayIndex = 0; } @@ -1030,7 +1028,7 @@ void *GraphicsAPI_D3D12::CreatePipeline(const PipelineCreateInfo &pipelineCI) { gpssd.SizeInBytes = sizeof(gpss1); gpssd.pPipelineStateSubobjectStream = &gpss1; - ID3D12Device2* device2 = nullptr; + ID3D12Device2 *device2 = nullptr; if (device->QueryInterface(&device2) != S_OK) { std::cout << "Error in querying for ID3D12Device2." << std::endl; DEBUG_BREAK; diff --git a/Chapter6_1_Multiview/Common/GraphicsAPI_OpenGL.cpp b/Chapter6_1_Multiview/Common/GraphicsAPI_OpenGL.cpp index e0b43b2..818ee70 100644 --- a/Chapter6_1_Multiview/Common/GraphicsAPI_OpenGL.cpp +++ b/Chapter6_1_Multiview/Common/GraphicsAPI_OpenGL.cpp @@ -420,11 +420,10 @@ GraphicsAPI_OpenGL::GraphicsAPI_OpenGL(XrInstance m_xrInstance, XrSystemId syste PFNGLGETSTRINGIPROC glGetStringi = (PFNGLGETSTRINGIPROC)GetExtension("glGetStringi"); - const char* foundExtension = nullptr; - for (GLint i = 0; i < n; i++) - { - const char* extension = (const char*)glGetStringi(GL_EXTENSIONS, i); - foundExtension = strstr((const char*)extension, "GL_OVR_multiview"); + const char *foundExtension = nullptr; + for (GLint i = 0; i < n; i++) { + const char *extension = (const char *)glGetStringi(GL_EXTENSIONS, i); + foundExtension = strstr((const char *)extension, "GL_OVR_multiview"); if (foundExtension) { break; } @@ -449,14 +448,14 @@ void GraphicsAPI_OpenGL::PresentDesktopSwapchainImage(void *swapchain, uint32_t #if defined(XR_USE_PLATFORM_WIN32) SwapBuffers(window.hDC); #elif defined(XR_USE_PLATFORM_XLIB) || defined(XR_USE_PLATFORM_XCB) - glXSwapBuffers(window.context.xDisplay, window.context.glxDrawable); + glXSwapBuffers(window.context.xDisplay, window.context.glxDrawable); #endif } size_t GraphicsAPI_OpenGL::AlignSizeForUniformBuffer(size_t size) { static size_t align = 0; if (align == 0) { - glGetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, (GLint*)&align); + glGetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, (GLint *)&align); } return Align(size, align); } diff --git a/Chapter6_1_Multiview/Common/GraphicsAPI_OpenGL_ES.cpp b/Chapter6_1_Multiview/Common/GraphicsAPI_OpenGL_ES.cpp index c9a2957..7183b60 100644 --- a/Chapter6_1_Multiview/Common/GraphicsAPI_OpenGL_ES.cpp +++ b/Chapter6_1_Multiview/Common/GraphicsAPI_OpenGL_ES.cpp @@ -102,7 +102,7 @@ GLint ToGLAddressMode(GraphicsAPI::SamplerCreateInfo::AddressMode mode) { case GraphicsAPI::SamplerCreateInfo::AddressMode::CLAMP_TO_BORDER: return GL_CLAMP_TO_BORDER; case GraphicsAPI::SamplerCreateInfo::AddressMode::MIRROR_CLAMP_TO_EDGE: - return 0; // GL_MIRROR_CLAMP_TO_EDGE // None for ES + return 0; // GL_MIRROR_CLAMP_TO_EDGE // None for ES default: return 0; } @@ -137,7 +137,8 @@ inline GLenum ToGLTopology(GraphicsAPI::PrimitiveTopology topology) { default: return 0; } -};*/ // None for ES +};*/ +// None for ES inline GLenum ToGLCullMode(GraphicsAPI::CullMode cullMode) { switch (cullMode) { case GraphicsAPI::CullMode::NONE: @@ -275,7 +276,8 @@ inline GLenum ToGLBlendOp(GraphicsAPI::BlendOp op) { default: return 0; } -};*/ // None for ES +};*/ +// None for ES #pragma endregion void GLDebugCallback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const void *userParam) { @@ -415,8 +417,8 @@ GraphicsAPI_OpenGL_ES::GraphicsAPI_OpenGL_ES(XrInstance m_xrInstance, XrSystemId glDebugMessageControl(GL_DONT_CARE, GL_DEBUG_TYPE_ERROR, GL_DONT_CARE, 0, nullptr, GL_TRUE); #if XR_TUTORIAL_ENABLE_MULTIVIEW - const char* extensions = (const char*)glGetString(GL_EXTENSIONS); - const char* foundExtension = strstr((const char*)extensions, "GL_OVR_multiview"); + const char *extensions = (const char *)glGetString(GL_EXTENSIONS); + const char *foundExtension = strstr((const char *)extensions, "GL_OVR_multiview"); if (foundExtension == nullptr) { std::cerr << "ERROR: OPENGL ES: Unable to find GL_OVR_multiview extension." << std::endl; DEBUG_BREAK; @@ -438,7 +440,7 @@ void GraphicsAPI_OpenGL_ES::PresentDesktopSwapchainImage(void *swapchain, uint32 size_t GraphicsAPI_OpenGL_ES::AlignSizeForUniformBuffer(size_t size) { static size_t align = 0; if (align == 0) { - glGetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, (GLint*)&align); + glGetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, (GLint *)&align); } return Align(size, align); } @@ -839,7 +841,8 @@ void GraphicsAPI_OpenGL_ES::SetPipeline(void *pipeline) { glEnable(GL_DEPTH_CLAMP); } else { glDisable(GL_DEPTH_CLAMP); - }*/ // None for ES + }*/ + // None for ES if (RS.rasteriserDiscardEnable) { glEnable(GL_RASTERIZER_DISCARD); @@ -849,7 +852,8 @@ void GraphicsAPI_OpenGL_ES::SetPipeline(void *pipeline) { /*if (RS.cullMode == CullMode::FRONT_AND_BACK) { glPolygonMode(GL_FRONT_AND_BACK, ToGLPolygonMode(RS.polygonMode)); - }*/ // None for ES + }*/ + // None for ES if (RS.cullMode > CullMode::NONE) { glEnable(GL_CULL_FACE); @@ -868,11 +872,11 @@ void GraphicsAPI_OpenGL_ES::SetPipeline(void *pipeline) { break; } case PolygonMode::LINE: { - polygonOffsetMode = 0; //GL_POLYGON_OFFSET_LINE; //None for ES + polygonOffsetMode = 0; // GL_POLYGON_OFFSET_LINE; //None for ES break; } case PolygonMode::POINT: { - polygonOffsetMode = 0; //GL_POLYGON_OFFSET_POINT; //None for ES + polygonOffsetMode = 0; // GL_POLYGON_OFFSET_POINT; //None for ES break; } } @@ -893,7 +897,8 @@ void GraphicsAPI_OpenGL_ES::SetPipeline(void *pipeline) { glEnable(GL_MULTISAMPLE); } else { glDisable(GL_MULTISAMPLE); - }*/ // None for ES + }*/ + // None for ES if (MS.sampleShadingEnable) { glEnable(GL_SAMPLE_SHADING); @@ -919,7 +924,8 @@ void GraphicsAPI_OpenGL_ES::SetPipeline(void *pipeline) { glEnable(GL_SAMPLE_ALPHA_TO_ONE); } else { glDisable(GL_SAMPLE_ALPHA_TO_ONE); - }*/ // None for ES + }*/ + // None for ES // DepthStencilState const DepthStencilState &DSS = pipelineCI.depthStencilState; @@ -942,7 +948,8 @@ void GraphicsAPI_OpenGL_ES::SetPipeline(void *pipeline) { } else { glDisable(GL_DEPTH_BOUNDS_TEST_EXT); } - }*/ // None for ES + }*/ + // None for ES if (DSS.stencilTestEnable) { glEnable(GL_STENCIL_TEST); @@ -978,7 +985,8 @@ void GraphicsAPI_OpenGL_ES::SetPipeline(void *pipeline) { glLogicOp(ToGLLogicOp(CBS.logicOp)); } else { glDisable(GL_COLOR_LOGIC_OP); - }*/ // None for ES + }*/ + // None for ES for (int i = 0; i < (int)CBS.attachments.size(); i++) { const ColorBlendAttachmentState &CBA = CBS.attachments[i]; @@ -1066,7 +1074,7 @@ void GraphicsAPI_OpenGL_ES::SetIndexBuffer(void *indexBuffer) { void GraphicsAPI_OpenGL_ES::DrawIndexed(uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance) { GLenum indexType = buffers[setIndexBuffer].stride == 4 ? GL_UNSIGNED_INT : GL_UNSIGNED_SHORT; - glDrawElementsInstanced(ToGLTopology(pipelines[setPipeline].inputAssemblyState.topology),indexCount, indexType, nullptr,instanceCount); + glDrawElementsInstanced(ToGLTopology(pipelines[setPipeline].inputAssemblyState.topology), indexCount, indexType, nullptr, instanceCount); } void GraphicsAPI_OpenGL_ES::Draw(uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance) { diff --git a/Chapter6_1_Multiview/Common/GraphicsAPI_OpenGL_ES.h b/Chapter6_1_Multiview/Common/GraphicsAPI_OpenGL_ES.h index 055eecd..8766371 100644 --- a/Chapter6_1_Multiview/Common/GraphicsAPI_OpenGL_ES.h +++ b/Chapter6_1_Multiview/Common/GraphicsAPI_OpenGL_ES.h @@ -84,7 +84,7 @@ class GraphicsAPI_OpenGL_ES : public GraphicsAPI { PFN_xrGetOpenGLESGraphicsRequirementsKHR xrGetOpenGLESGraphicsRequirementsKHR = nullptr; XrGraphicsBindingOpenGLESAndroidKHR graphicsBinding{}; - std::unordered_map < XrSwapchain, std::pair>> swapchainImagesMap{}; + std::unordered_map>> swapchainImagesMap{}; std::unordered_map buffers{}; std::unordered_map images{}; diff --git a/Chapter6_1_Multiview/Common/GraphicsAPI_Vulkan.h b/Chapter6_1_Multiview/Common/GraphicsAPI_Vulkan.h index d3b1a48..58cf7aa 100644 --- a/Chapter6_1_Multiview/Common/GraphicsAPI_Vulkan.h +++ b/Chapter6_1_Multiview/Common/GraphicsAPI_Vulkan.h @@ -37,7 +37,7 @@ class GraphicsAPI_Vulkan : public GraphicsAPI { VkImage image = swapchainImagesMap[swapchain].second[index].image; VkImageLayout layout = swapchainImagesMap[swapchain].first == SwapchainType::COLOR ? VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL : VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; imageStates[image] = layout; - return (void *)image; + return (void*)image; } // XR_DOCS_TAG_END_GetSwapchainImage_Vulkan @@ -134,6 +134,5 @@ class GraphicsAPI_Vulkan : public GraphicsAPI { VkPipeline setPipeline = VK_NULL_HANDLE; std::unordered_map> cmdBufferDescriptorSets; std::vector> writeDescSets; - }; #endif diff --git a/Chapter6_1_Multiview/Common/xr_linear_algebra.h b/Chapter6_1_Multiview/Common/xr_linear_algebra.h index b1138c1..0d2ce00 100644 --- a/Chapter6_1_Multiview/Common/xr_linear_algebra.h +++ b/Chapter6_1_Multiview/Common/xr_linear_algebra.h @@ -132,7 +132,7 @@ static const XrColor4f XrColorCyan = {0.0f, 1.0f, 1.0f, 1.0f}; static const XrColor4f XrColorLightGrey = {0.7f, 0.7f, 0.7f, 1.0f}; static const XrColor4f XrColorDarkGrey = {0.3f, 0.3f, 0.3f, 1.0f}; -//typedef enum GraphicsAPI_Type { GRAPHICS_VULKAN, GRAPHICS_OPENGL, GRAPHICS_OPENGL_ES, GRAPHICS_D3D } GraphicsAPI_Type; +// typedef enum GraphicsAPI_Type { GRAPHICS_VULKAN, GRAPHICS_OPENGL, GRAPHICS_OPENGL_ES, GRAPHICS_D3D } GraphicsAPI_Type; // Column-major, pre-multiplied. This type does not exist in the OpenXR API and is provided for convenience. typedef struct XrMatrix4x4f { diff --git a/Chapter6_1_Multiview/cmake/FindEGL.cmake b/Chapter6_1_Multiview/cmake/FindEGL.cmake index 6c3e015..6a17b50 100644 --- a/Chapter6_1_Multiview/cmake/FindEGL.cmake +++ b/Chapter6_1_Multiview/cmake/FindEGL.cmake @@ -76,17 +76,15 @@ endif() set(EGL_DEFINITIONS ${PKG_EGL_CFLAGS_OTHER}) -find_path(EGL_INCLUDE_DIR - NAMES - EGL/egl.h - HINTS - ${PKG_EGL_INCLUDE_DIRS} +find_path( + EGL_INCLUDE_DIR + NAMES EGL/egl.h + HINTS ${PKG_EGL_INCLUDE_DIRS} ) -find_library(EGL_LIBRARY - NAMES - EGL - HINTS - ${PKG_EGL_LIBRARY_DIRS} +find_library( + EGL_LIBRARY + NAMES EGL + HINTS ${PKG_EGL_LIBRARY_DIRS} ) # NB: We do *not* use the version information from pkg-config, as that @@ -97,21 +95,20 @@ if(EGL_INCLUDE_DIR) # EGL_VERSION_1_1. Finding the highest supported version involves # finding all these defines and selecting the highest numbered. file(READ "${EGL_INCLUDE_DIR}/EGL/egl.h" _EGL_header_contents) - string(REGEX MATCHALL - "[ \t]EGL_VERSION_[0-9_]+" - _EGL_version_lines - "${_EGL_header_contents}" + string( + REGEX MATCHALL "[ \t]EGL_VERSION_[0-9_]+" _EGL_version_lines + "${_EGL_header_contents}" ) unset(_EGL_header_contents) foreach(_EGL_version_line ${_EGL_version_lines}) - string(REGEX REPLACE - "[ \t]EGL_VERSION_([0-9_]+)" - "\\1" - _version_candidate - "${_EGL_version_line}" + string( + REGEX REPLACE "[ \t]EGL_VERSION_([0-9_]+)" "\\1" _version_candidate + "${_EGL_version_line}" ) string(REPLACE "_" "." _version_candidate "${_version_candidate}") - if(NOT DEFINED EGL_VERSION OR EGL_VERSION VERSION_LESS _version_candidate) + if(NOT DEFINED EGL_VERSION OR EGL_VERSION VERSION_LESS + _version_candidate + ) set(EGL_VERSION "${_version_candidate}") endif() endforeach() @@ -122,13 +119,16 @@ cmake_push_check_state(RESET) list(APPEND CMAKE_REQUIRED_LIBRARIES "${EGL_LIBRARY}") list(APPEND CMAKE_REQUIRED_INCLUDES "${EGL_INCLUDE_DIR}") -check_cxx_source_compiles(" +check_cxx_source_compiles( + " #include int main(int argc, char *argv[]) { EGLint x = 0; EGLDisplay dpy = 0; EGLContext ctx = 0; eglDestroyContext(dpy, ctx); -}" HAVE_EGL) +}" + HAVE_EGL +) cmake_pop_check_state() @@ -138,25 +138,25 @@ if(NOT EMSCRIPTEN) endif() include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(EGL - FOUND_VAR - EGL_FOUND - REQUIRED_VARS - ${required_vars} - VERSION_VAR - EGL_VERSION +find_package_handle_standard_args( + EGL + FOUND_VAR EGL_FOUND + REQUIRED_VARS ${required_vars} + VERSION_VAR EGL_VERSION ) if(EGL_FOUND AND NOT TARGET EGL::EGL) - if (EMSCRIPTEN) + if(EMSCRIPTEN) add_library(EGL::EGL INTERFACE IMPORTED) # Nothing further to be done, system include paths have headers and linkage is implicit. else() add_library(EGL::EGL UNKNOWN IMPORTED) - set_target_properties(EGL::EGL PROPERTIES - IMPORTED_LOCATION "${EGL_LIBRARY}" - INTERFACE_COMPILE_OPTIONS "${EGL_DEFINITIONS}" - INTERFACE_INCLUDE_DIRECTORIES "${EGL_INCLUDE_DIR}" + set_target_properties( + EGL::EGL + PROPERTIES + IMPORTED_LOCATION "${EGL_LIBRARY}" + INTERFACE_COMPILE_OPTIONS "${EGL_DEFINITIONS}" + INTERFACE_INCLUDE_DIRECTORIES "${EGL_INCLUDE_DIR}" ) endif() endif() @@ -169,7 +169,9 @@ set(EGL_INCLUDE_DIRS ${EGL_INCLUDE_DIR}) set(EGL_VERSION_STRING ${EGL_VERSION}) include(FeatureSummary) -set_package_properties(EGL PROPERTIES +set_package_properties( + EGL PROPERTIES URL "https://www.khronos.org/egl/" - DESCRIPTION "A platform-independent mechanism for creating rendering surfaces for use with other graphics libraries, such as OpenGL|ES and OpenVG." + DESCRIPTION + "A platform-independent mechanism for creating rendering surfaces for use with other graphics libraries, such as OpenGL|ES and OpenVG." ) diff --git a/Chapter6_1_Multiview/cmake/FindOpenGLES.cmake b/Chapter6_1_Multiview/cmake/FindOpenGLES.cmake index b16a1d3..0a0d1ca 100644 --- a/Chapter6_1_Multiview/cmake/FindOpenGLES.cmake +++ b/Chapter6_1_Multiview/cmake/FindOpenGLES.cmake @@ -48,7 +48,8 @@ The following cache variable may also be set to assist/control the operation of set(OpenGLES_ROOT_DIR "${OpenGLES_ROOT_DIR}" - CACHE PATH "Root to search for OpenGLES") + CACHE PATH "Root to search for OpenGLES" +) if(NOT OpenGLES_FIND_COMPONENTS) set(OpenGLES_FIND_COMPONENTS V2) @@ -74,55 +75,70 @@ find_path( NAMES GLES/gl.h PATHS ${OpenGLES_ROOT_DIR} HINTS ${PC_glesv2_INCLUDE_DIRS} ${PC_glesv1_cm_INCLUDE_DIRS} - PATH_SUFFIXES include) + PATH_SUFFIXES include +) find_path( OpenGLES_V2_INCLUDE_DIR NAMES GLES2/gl2.h PATHS ${OpenGLES_ROOT_DIR} HINTS ${PC_glesv2_INCLUDE_DIRS} ${PC_glesv1_cm_INCLUDE_DIRS} - PATH_SUFFIXES include) + PATH_SUFFIXES include +) find_path( OpenGLES_V3_INCLUDE_DIR NAMES GLES3/gl3.h PATHS ${OpenGLES_ROOT_DIR} HINTS ${OpenGLES_V1_INCLUDE_DIR} ${OpenGLES_V2_INCLUDE_DIR} ${PC_glesv2_INCLUDE_DIRS} ${PC_glesv1_cm_INCLUDE_DIRS} - PATH_SUFFIXES include) + PATH_SUFFIXES include +) find_path( OpenGLES_V31_INCLUDE_DIR NAMES GLES3/gl31.h PATHS ${OpenGLES_ROOT_DIR} - HINTS ${OpenGLES_V1_INCLUDE_DIR} ${OpenGLES_V2_INCLUDE_DIR} - ${OpenGLES_V3_INCLUDE_DIR} ${PC_glesv2_INCLUDE_DIRS} - ${PC_glesv1_cm_INCLUDE_DIRS} - PATH_SUFFIXES include) + HINTS + ${OpenGLES_V1_INCLUDE_DIR} + ${OpenGLES_V2_INCLUDE_DIR} + ${OpenGLES_V3_INCLUDE_DIR} + ${PC_glesv2_INCLUDE_DIRS} + ${PC_glesv1_cm_INCLUDE_DIRS} + PATH_SUFFIXES include +) find_path( OpenGLES_V32_INCLUDE_DIR NAMES GLES3/gl32.h PATHS ${OpenGLES_ROOT_DIR} - HINTS ${OpenGLES_V1_INCLUDE_DIR} ${OpenGLES_V2_INCLUDE_DIR} - ${OpenGLES_V3_INCLUDE_DIR} ${OpenGLES_V31_INCLUDE_DIR} - ${PC_glesv2_INCLUDE_DIRS} ${PC_glesv1_cm_INCLUDE_DIRS} - PATH_SUFFIXES include) + HINTS + ${OpenGLES_V1_INCLUDE_DIR} + ${OpenGLES_V2_INCLUDE_DIR} + ${OpenGLES_V3_INCLUDE_DIR} + ${OpenGLES_V31_INCLUDE_DIR} + ${PC_glesv2_INCLUDE_DIRS} + ${PC_glesv1_cm_INCLUDE_DIRS} + PATH_SUFFIXES include +) find_library( OpenGLES_V1_LIBRARY NAMES GLES GLESv1_CM PATHS ${OpenGLES_ROOT_DIR} HINTS ${PC_glesv1_cm_LIBRARY_DIRS} - PATH_SUFFIXES lib) + PATH_SUFFIXES lib +) find_library( OpenGLES_V2_LIBRARY NAMES GLESv2 OpenGLES # for Apple framework PATHS ${OpenGLES_ROOT_DIR} HINTS ${PC_glesv2_LIBRARY_DIRS} - PATH_SUFFIXES lib) + PATH_SUFFIXES lib +) find_library( OpenGLES_V3_LIBRARY NAMES GLESv3 PATHS ${OpenGLES_ROOT_DIR} HINTS ${PC_glesv2_LIBRARY_DIRS} - PATH_SUFFIXES lib) + PATH_SUFFIXES lib +) if(OpenGLES_V2_LIBRARY AND NOT OpenGLES_V3_LIBRARY) set(OpenGLES_V3_LIBRARY ${OpenGLES_V2_LIBRARY}) @@ -131,32 +147,40 @@ endif() set(_gles_required_vars) foreach(_comp IN LISTS OpenGLES_FIND_COMPONENTS) if(_comp STREQUAL "V1") - list(APPEND _gles_required_vars OpenGLES_V1_LIBRARY - OpenGLES_V1_INCLUDE_DIR) + list( + APPEND _gles_required_vars OpenGLES_V1_LIBRARY + OpenGLES_V1_INCLUDE_DIR + ) if(OpenGLES_V1_INCLUDE_DIR AND OpenGLES_V1_LIBRARY) set(OpenGLES_${_comp}_FOUND TRUE) else() set(OpenGLES_${_comp}_FOUND FALSE) endif() elseif(_comp STREQUAL "V2") - list(APPEND _gles_required_vars OpenGLES_V2_LIBRARY - OpenGLES_V2_INCLUDE_DIR) + list( + APPEND _gles_required_vars OpenGLES_V2_LIBRARY + OpenGLES_V2_INCLUDE_DIR + ) if(OpenGLES_V2_INCLUDE_DIR AND OpenGLES_V2_LIBRARY) set(OpenGLES_${_comp}_FOUND TRUE) else() set(OpenGLES_${_comp}_FOUND FALSE) endif() elseif(_comp STREQUAL "V3") - list(APPEND _gles_required_vars OpenGLES_V3_LIBRARY - OpenGLES_V3_INCLUDE_DIR) + list( + APPEND _gles_required_vars OpenGLES_V3_LIBRARY + OpenGLES_V3_INCLUDE_DIR + ) if(OpenGLES_V3_INCLUDE_DIR AND OpenGLES_V3_LIBRARY) set(OpenGLES_${_comp}_FOUND TRUE) else() set(OpenGLES_${_comp}_FOUND FALSE) endif() elseif(_comp STREQUAL "V31") - list(APPEND _gles_required_vars OpenGLES_V3_LIBRARY - OpenGLES_V31_INCLUDE_DIR) + list( + APPEND _gles_required_vars OpenGLES_V3_LIBRARY + OpenGLES_V31_INCLUDE_DIR + ) if(OpenGLES_V31_INCLUDE_DIR AND OpenGLES_V3_LIBRARY) set(OpenGLES_${_comp}_FOUND TRUE) @@ -164,8 +188,10 @@ foreach(_comp IN LISTS OpenGLES_FIND_COMPONENTS) set(OpenGLES_${_comp}_FOUND FALSE) endif() elseif(_comp STREQUAL "V32") - list(APPEND _gles_required_vars OpenGLES_V3_LIBRARY - OpenGLES_V32_INCLUDE_DIR) + list( + APPEND _gles_required_vars OpenGLES_V3_LIBRARY + OpenGLES_V32_INCLUDE_DIR + ) if(OpenGLES_V32_INCLUDE_DIR AND OpenGLES_V3_LIBRARY) set(OpenGLES_${_comp}_FOUND TRUE) else() @@ -173,7 +199,8 @@ foreach(_comp IN LISTS OpenGLES_FIND_COMPONENTS) endif() else() message( - WARNING "${_comp} is not a recognized OpenGL-ES component/version") + WARNING "${_comp} is not a recognized OpenGL-ES component/version" + ) set(OpenGLES_${_comp}_FOUND FALSE) endif() endforeach() @@ -185,27 +212,30 @@ include(FindPackageHandleStandardArgs) find_package_handle_standard_args( OpenGLES REQUIRED_VARS ${_gles_required_vars} - HANDLE_COMPONENTS) + HANDLE_COMPONENTS +) if(OpenGLES_FOUND) if(OpenGLES_V1_FOUND AND NOT TARGET OpenGLES::OpenGLESv1) add_library(OpenGLES::OpenGLESv1 SHARED IMPORTED) set_target_properties( OpenGLES::OpenGLESv1 - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES - "${OpenGLES_V1_INCLUDE_DIR}" - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION ${OpenGLES_V1_LIBRARY}) + PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${OpenGLES_V1_INCLUDE_DIR}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION ${OpenGLES_V1_LIBRARY} + ) endif() if(OpenGLES_V2_FOUND AND NOT TARGET OpenGLES::OpenGLESv2) add_library(OpenGLES::OpenGLESv2 SHARED IMPORTED) set_target_properties( OpenGLES::OpenGLESv2 - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES - "${OpenGLES_V2_INCLUDE_DIR}" - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION ${OpenGLES_V2_LIBRARY}) + PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${OpenGLES_V2_INCLUDE_DIR}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION ${OpenGLES_V2_LIBRARY} + ) endif() if(OpenGLES_V3_FOUND) if(NOT TARGET OpenGLES::OpenGLESv3) @@ -213,30 +243,33 @@ if(OpenGLES_FOUND) set_target_properties( OpenGLES::OpenGLESv3 - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES - "${OpenGLES_V3_INCLUDE_DIR}" - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION ${OpenGLES_V3_LIBRARY}) + PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${OpenGLES_V3_INCLUDE_DIR}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION ${OpenGLES_V3_LIBRARY} + ) endif() if(OpenGLES_V31_FOUND AND NOT TARGET OpenGLES::OpenGLESv31) add_library(OpenGLES::OpenGLESv31 SHARED IMPORTED) set_target_properties( OpenGLES::OpenGLESv31 - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES - "${OpenGLES_V31_INCLUDE_DIR}" - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION ${OpenGLES_V3_LIBRARY}) + PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${OpenGLES_V31_INCLUDE_DIR}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION ${OpenGLES_V3_LIBRARY} + ) endif() if(OpenGLES_V32_FOUND AND NOT TARGET OpenGLES::OpenGLESv32) add_library(OpenGLES::OpenGLESv32 SHARED IMPORTED) set_target_properties( OpenGLES::OpenGLESv32 - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES - "${OpenGLES_V32_INCLUDE_DIR}" - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION ${OpenGLES_V3_LIBRARY}) + PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${OpenGLES_V32_INCLUDE_DIR}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION ${OpenGLES_V3_LIBRARY} + ) endif() endif() mark_as_advanced( @@ -247,7 +280,8 @@ if(OpenGLES_FOUND) OpenGLES_V3_LIBRARY OpenGLES_V3_INCLUDE_DIR OpenGLES_V31_INCLUDE_DIR - OpenGLES_V32_INCLUDE_DIR) + OpenGLES_V32_INCLUDE_DIR + ) endif() mark_as_advanced(OpenGLES_ROOT_DIR) diff --git a/Chapter6_1_Multiview/cmake/dxc_shader.cmake b/Chapter6_1_Multiview/cmake/dxc_shader.cmake index 496fb9e..d2522cb 100644 --- a/Chapter6_1_Multiview/cmake/dxc_shader.cmake +++ b/Chapter6_1_Multiview/cmake/dxc_shader.cmake @@ -37,23 +37,17 @@ function(dxc_shader) OUTPUT "${_dxc_OUTPUT}" BYPRODUCTS "${_dxc_OUTPUT_PDB}" COMMAND - "${_dxc}" - /nologo - ${_dxc_output_args} ${_dxc_OUTPUT} + "${_dxc}" /nologo ${_dxc_output_args} ${_dxc_OUTPUT} $<$,$>:/Fd> $<$,$>:${_dxc_OUTPUT_PDB}> - /T${_dxc_PROFILE} - /E${_dxc_ENTRY_POINT} - $<$:/Od> + /T${_dxc_PROFILE} /E${_dxc_ENTRY_POINT} $<$:/Od> $<$:/Zss> $<$,$>:/Zi> "${_dxc_INPUT}" MAIN_DEPENDENCY "${_dxc_INPUT}" DEPENDS "${_dxc_INPUT}" ${_dxc_EXTRA_DEPENDS} COMMENT "dxc: ${_dxc_INPUT}" - USES_TERMINAL - VERBATIM - COMMAND_EXPAND_LISTS + USES_TERMINAL VERBATIM COMMAND_EXPAND_LISTS ) endfunction() diff --git a/Chapter6_1_Multiview/cmake/fxc_shader.cmake b/Chapter6_1_Multiview/cmake/fxc_shader.cmake index 4a13eb2..e3915aa 100644 --- a/Chapter6_1_Multiview/cmake/fxc_shader.cmake +++ b/Chapter6_1_Multiview/cmake/fxc_shader.cmake @@ -48,23 +48,17 @@ function(fxc_shader) OUTPUT "${_fxc_OUTPUT}" BYPRODUCTS "${_fxc_OUTPUT_PDB}" COMMAND - "${_fxc}" - /nologo - ${_fxc_output_args} ${_fxc_OUTPUT} + "${_fxc}" /nologo ${_fxc_output_args} ${_fxc_OUTPUT} $<$,$>:/Fd> $<$,$>:${_fxc_OUTPUT_PDB}> - /T${_fxc_PROFILE} - /E${_fxc_ENTRY_POINT} - $<$:/Od> + /T${_fxc_PROFILE} /E${_fxc_ENTRY_POINT} $<$:/Od> $<$:/Zss> $<$,$>:/Zi> "${_fxc_INPUT}" MAIN_DEPENDENCY "${_fxc_INPUT}" DEPENDS "${_fxc_INPUT}" ${_fxc_EXTRA_DEPENDS} COMMENT "FXC: ${_fxc_INPUT}" - USES_TERMINAL - VERBATIM - COMMAND_EXPAND_LISTS + USES_TERMINAL VERBATIM COMMAND_EXPAND_LISTS ) endfunction() diff --git a/Chapter6_1_Multiview/cmake/glsl_shader.cmake b/Chapter6_1_Multiview/cmake/glsl_shader.cmake index 480bdc1..328129d 100644 --- a/Chapter6_1_Multiview/cmake/glsl_shader.cmake +++ b/Chapter6_1_Multiview/cmake/glsl_shader.cmake @@ -60,15 +60,12 @@ function(glsl_spv_shader) add_custom_command( OUTPUT "${_glsl_spv_OUTPUT}" COMMAND - "${GLSL_COMPILER}" - ${_glsl_spv_output_type_arg} - -o "${_glsl_spv_OUTPUT}" - "-fshader-stage=${_glsl_spv_STAGE}" + "${GLSL_COMPILER}" ${_glsl_spv_output_type_arg} -o + "${_glsl_spv_OUTPUT}" "-fshader-stage=${_glsl_spv_STAGE}" "-fentry-point=${_glsl_spv_ENTRY_POINT}" $,$>,-g,> $,-O0,-O> - "--target-env=${_glsl_spv_TARGET_ENV}" - "${_glsl_spv_INPUT}" + "--target-env=${_glsl_spv_TARGET_ENV}" "${_glsl_spv_INPUT}" MAIN_DEPENDENCY "${_glsl_spv_INPUT}" DEPENDS "${_glsl_spv_INPUT}" ${_glsl_spv_EXTRA_DEPENDS} USES_TERMINAL VERBATIM COMMAND_EXPAND_LISTS @@ -83,16 +80,12 @@ function(glsl_spv_shader) add_custom_command( OUTPUT "${_glsl_spv_OUTPUT}" COMMAND - "${GLSLANG_VALIDATOR}" - -o "${_glsl_spv_OUTPUT}" - -S "${_glsl_spv_STAGE}" - -e "${_glsl_spv_ENTRY_POINT}" + "${GLSLANG_VALIDATOR}" -o "${_glsl_spv_OUTPUT}" -S + "${_glsl_spv_STAGE}" -e "${_glsl_spv_ENTRY_POINT}" -x # output as hex - $<$:-gVS> - $<$:-Od> - $<$:-g0> - "--target-env" "${_glsl_spv_TARGET_ENV}" - "-V ${_glsl_spv_INPUT}" + $<$:-gVS> $<$:-Od> + $<$:-g0> "--target-env" + "${_glsl_spv_TARGET_ENV}" "-V ${_glsl_spv_INPUT}" MAIN_DEPENDENCY "${_glsl_spv_INPUT}" DEPENDS "${_glsl_spv_INPUT}" ${_glsl_spv_EXTRA_DEPENDS} USES_TERMINAL VERBATIM COMMAND_EXPAND_LISTS diff --git a/Chapter6_1_Multiview/cmake/graphics_api_select.cmake b/Chapter6_1_Multiview/cmake/graphics_api_select.cmake index 5d955be..c11f43b 100644 --- a/Chapter6_1_Multiview/cmake/graphics_api_select.cmake +++ b/Chapter6_1_Multiview/cmake/graphics_api_select.cmake @@ -4,15 +4,32 @@ include_guard() -set(XR_TUTORIAL_GRAPHICS_API "VULKAN" CACHE STRING "Which graphics API to use when building the tutorial projects.") +set(XR_TUTORIAL_GRAPHICS_API + "VULKAN" + CACHE STRING + "Which graphics API to use when building the tutorial projects." +) if(WIN32) - set_property(CACHE XR_TUTORIAL_GRAPHICS_API PROPERTY STRINGS D3D11 D3D12 OPENGL VULKAN) + set_property( + CACHE XR_TUTORIAL_GRAPHICS_API + PROPERTY + STRINGS + D3D11 + D3D12 + OPENGL + VULKAN + ) elseif(LINUX AND NOT ANDROID) set_property(CACHE XR_TUTORIAL_GRAPHICS_API PROPERTY STRINGS OPENGL VULKAN) elseif(ANDROID) - set_property(CACHE XR_TUTORIAL_GRAPHICS_API PROPERTY STRINGS OPENGL_ES VULKAN) + set_property( + CACHE XR_TUTORIAL_GRAPHICS_API PROPERTY STRINGS OPENGL_ES VULKAN + ) endif() function(AddGraphicsAPIDefine PROJECT_NAME) - target_compile_definitions(${PROJECT_NAME} PUBLIC XR_TUTORIAL_GRAPHICS_API=${XR_TUTORIAL_GRAPHICS_API}) + target_compile_definitions( + ${PROJECT_NAME} + PUBLIC XR_TUTORIAL_GRAPHICS_API=${XR_TUTORIAL_GRAPHICS_API} + ) endfunction(AddGraphicsAPIDefine) diff --git a/Common/DebugOutput.h b/Common/DebugOutput.h index 35c748f..f35fec8 100644 --- a/Common/DebugOutput.h +++ b/Common/DebugOutput.h @@ -171,22 +171,24 @@ class DebugOutput { } }; - #endif #ifdef __ANDROID__ #include + #include #define XR_TUT_LOG_TAG "openxr_tutorial" -#define XR_TUT_LOG(...) { \ +#define XR_TUT_LOG(...) \ + { \ std::ostringstream ostr; \ - ostr<<__VA_ARGS__; \ + ostr << __VA_ARGS__; \ __android_log_write(ANDROID_LOG_DEBUG, XR_TUT_LOG_TAG, ostr.str().c_str()); \ } -#define XR_TUT_LOG_ERROR(...) { \ +#define XR_TUT_LOG_ERROR(...) \ + { \ std::ostringstream ostr; \ - ostr<<__VA_ARGS__; \ + ostr << __VA_ARGS__; \ __android_log_write(ANDROID_LOG_ERROR, XR_TUT_LOG_TAG, ostr.str().c_str()); \ } #else diff --git a/Common/GraphicsAPI_D3D11.cpp b/Common/GraphicsAPI_D3D11.cpp index 3c24ace..a2d8bf8 100644 --- a/Common/GraphicsAPI_D3D11.cpp +++ b/Common/GraphicsAPI_D3D11.cpp @@ -186,7 +186,7 @@ GraphicsAPI_D3D11::GraphicsAPI_D3D11() { IDXGIAdapter *adapter = nullptr; DXGI_ADAPTER_DESC adapterDesc = {}; - for(UINT i = 0; factory->EnumAdapters(i, &adapter) != DXGI_ERROR_NOT_FOUND; ++i) { + for (UINT i = 0; factory->EnumAdapters(i, &adapter) != DXGI_ERROR_NOT_FOUND; ++i) { adapter->GetDesc(&adapterDesc); break; } @@ -204,7 +204,7 @@ GraphicsAPI_D3D11::GraphicsAPI_D3D11(XrInstance m_xrInstance, XrSystemId systemI IDXGIAdapter *adapter = nullptr; DXGI_ADAPTER_DESC adapterDesc = {}; - for(UINT i = 0; factory->EnumAdapters(i, &adapter) != DXGI_ERROR_NOT_FOUND; ++i) { + for (UINT i = 0; factory->EnumAdapters(i, &adapter) != DXGI_ERROR_NOT_FOUND; ++i) { adapter->GetDesc(&adapterDesc); if (memcmp(&graphicsRequirements.adapterLuid, &adapterDesc.AdapterLuid, sizeof(LUID)) == 0) { break; // We have the matching adapter that OpenXR wants. @@ -216,10 +216,10 @@ GraphicsAPI_D3D11::GraphicsAPI_D3D11(XrInstance m_xrInstance, XrSystemId systemI D3D11_CHECK(D3D11CreateDevice(adapter, D3D_DRIVER_TYPE_UNKNOWN, 0, D3D11_CREATE_DEVICE_DEBUG, &graphicsRequirements.minFeatureLevel, 1, D3D11_SDK_VERSION, &device, nullptr, &immediateContext), "Failed to create D3D11 Device."); - device->QueryInterface( __uuidof(ID3D11Debug), (void**)&d3dDebug ); - d3dDebug->QueryInterface( __uuidof(ID3D11InfoQueue), (void**)&infoQueue ); - infoQueue->SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY_WARNING, true); - infoQueue->SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY_ERROR, true); + device->QueryInterface(__uuidof(ID3D11Debug), (void **)&d3dDebug); + d3dDebug->QueryInterface(__uuidof(ID3D11InfoQueue), (void **)&infoQueue); + infoQueue->SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY_WARNING, true); + infoQueue->SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY_ERROR, true); } GraphicsAPI_D3D11::~GraphicsAPI_D3D11() { @@ -261,7 +261,7 @@ void *GraphicsAPI_D3D11::GetDesktopSwapchainImage(void *swapchain, uint32_t inde return texture; } -void GraphicsAPI_D3D11::AcquireDesktopSwapchanImage(void *swapchain, uint32_t& index) { +void GraphicsAPI_D3D11::AcquireDesktopSwapchanImage(void *swapchain, uint32_t &index) { IDXGISwapChain3 *d3d11Swapchain = reinterpret_cast(swapchain); index = d3d11Swapchain->GetCurrentBackBufferIndex(); } @@ -849,7 +849,7 @@ void GraphicsAPI_D3D11::SetPipeline(void *pipeline) { blendDesc.IndependentBlendEnable = true; size_t i = 0; for (auto &blend : pipelineCI.colorBlendState.attachments) { - blendDesc.RenderTarget[i].RenderTargetWriteMask=0xFF; + blendDesc.RenderTarget[i].RenderTargetWriteMask = 0xFF; blendDesc.RenderTarget[i].BlendEnable = blend.blendEnable; blendDesc.RenderTarget[i].SrcBlend = ToD3D11_BLEND(blend.srcColorBlendFactor); blendDesc.RenderTarget[i].DestBlend = ToD3D11_BLEND(blend.dstColorBlendFactor); diff --git a/Common/GraphicsAPI_D3D11.h b/Common/GraphicsAPI_D3D11.h index de14d83..3414c25 100644 --- a/Common/GraphicsAPI_D3D11.h +++ b/Common/GraphicsAPI_D3D11.h @@ -81,8 +81,8 @@ class GraphicsAPI_D3D11 : public GraphicsAPI { IDXGIFactory4* factory = nullptr; ID3D11Device* device = nullptr; - ID3D11Debug *d3dDebug=nullptr; - ID3D11InfoQueue *infoQueue=nullptr; + ID3D11Debug* d3dDebug = nullptr; + ID3D11InfoQueue* infoQueue = nullptr; ID3D11DeviceContext* immediateContext = nullptr; PFN_xrGetD3D11GraphicsRequirementsKHR xrGetD3D11GraphicsRequirementsKHR = nullptr; diff --git a/Common/GraphicsAPI_D3D12.cpp b/Common/GraphicsAPI_D3D12.cpp index cbe282c..47bc04f 100644 --- a/Common/GraphicsAPI_D3D12.cpp +++ b/Common/GraphicsAPI_D3D12.cpp @@ -163,7 +163,7 @@ GraphicsAPI_D3D12::GraphicsAPI_D3D12() { IDXGIAdapter *adapter = nullptr; DXGI_ADAPTER_DESC adapterDesc = {}; - for(UINT i = 0; factory->EnumAdapters(i, &adapter) != DXGI_ERROR_NOT_FOUND; ++i) { + for (UINT i = 0; factory->EnumAdapters(i, &adapter) != DXGI_ERROR_NOT_FOUND; ++i) { adapter->GetDesc(&adapterDesc); break; } @@ -232,7 +232,7 @@ GraphicsAPI_D3D12::GraphicsAPI_D3D12(XrInstance m_xrInstance, XrSystemId systemI IDXGIAdapter *adapter = nullptr; DXGI_ADAPTER_DESC adapterDesc = {}; - for(UINT i = 0; factory->EnumAdapters(i, &adapter) != DXGI_ERROR_NOT_FOUND; ++i) { + for (UINT i = 0; factory->EnumAdapters(i, &adapter) != DXGI_ERROR_NOT_FOUND; ++i) { adapter->GetDesc(&adapterDesc); if (memcmp(&graphicsRequirements.adapterLuid, &adapterDesc.AdapterLuid, sizeof(LUID)) == 0) { break; // We have the matching adapter that OpenXR wants. diff --git a/Common/GraphicsAPI_OpenGL.cpp b/Common/GraphicsAPI_OpenGL.cpp index a4a2a46..e3436d8 100644 --- a/Common/GraphicsAPI_OpenGL.cpp +++ b/Common/GraphicsAPI_OpenGL.cpp @@ -428,7 +428,7 @@ void GraphicsAPI_OpenGL::PresentDesktopSwapchainImage(void *swapchain, uint32_t #if defined(XR_USE_PLATFORM_WIN32) SwapBuffers(window.hDC); #elif defined(XR_USE_PLATFORM_XLIB) || defined(XR_USE_PLATFORM_XCB) - glXSwapBuffers(window.context.xDisplay, window.context.glxDrawable); + glXSwapBuffers(window.context.xDisplay, window.context.glxDrawable); #endif } diff --git a/Common/GraphicsAPI_OpenGL_ES.cpp b/Common/GraphicsAPI_OpenGL_ES.cpp index a0d0c65..24a85eb 100644 --- a/Common/GraphicsAPI_OpenGL_ES.cpp +++ b/Common/GraphicsAPI_OpenGL_ES.cpp @@ -102,7 +102,7 @@ GLint ToGLAddressMode(GraphicsAPI::SamplerCreateInfo::AddressMode mode) { case GraphicsAPI::SamplerCreateInfo::AddressMode::CLAMP_TO_BORDER: return GL_CLAMP_TO_BORDER; case GraphicsAPI::SamplerCreateInfo::AddressMode::MIRROR_CLAMP_TO_EDGE: - return 0; // GL_MIRROR_CLAMP_TO_EDGE // None for ES + return 0; // GL_MIRROR_CLAMP_TO_EDGE // None for ES default: return 0; } @@ -137,7 +137,8 @@ inline GLenum ToGLTopology(GraphicsAPI::PrimitiveTopology topology) { default: return 0; } -};*/ // None for ES +};*/ +// None for ES inline GLenum ToGLCullMode(GraphicsAPI::CullMode cullMode) { switch (cullMode) { case GraphicsAPI::CullMode::NONE: @@ -275,7 +276,8 @@ inline GLenum ToGLBlendOp(GraphicsAPI::BlendOp op) { default: return 0; } -};*/ // None for ES +};*/ +// None for ES #pragma endregion void GLDebugCallback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const void *userParam) { @@ -817,7 +819,8 @@ void GraphicsAPI_OpenGL_ES::SetPipeline(void *pipeline) { glEnable(GL_DEPTH_CLAMP); } else { glDisable(GL_DEPTH_CLAMP); - }*/ // None for ES + }*/ + // None for ES if (RS.rasteriserDiscardEnable) { glEnable(GL_RASTERIZER_DISCARD); @@ -827,7 +830,8 @@ void GraphicsAPI_OpenGL_ES::SetPipeline(void *pipeline) { /*if (RS.cullMode == CullMode::FRONT_AND_BACK) { glPolygonMode(GL_FRONT_AND_BACK, ToGLPolygonMode(RS.polygonMode)); - }*/ // None for ES + }*/ + // None for ES if (RS.cullMode > CullMode::NONE) { glEnable(GL_CULL_FACE); @@ -846,11 +850,11 @@ void GraphicsAPI_OpenGL_ES::SetPipeline(void *pipeline) { break; } case PolygonMode::LINE: { - polygonOffsetMode = 0; //GL_POLYGON_OFFSET_LINE; //None for ES + polygonOffsetMode = 0; // GL_POLYGON_OFFSET_LINE; //None for ES break; } case PolygonMode::POINT: { - polygonOffsetMode = 0; //GL_POLYGON_OFFSET_POINT; //None for ES + polygonOffsetMode = 0; // GL_POLYGON_OFFSET_POINT; //None for ES break; } } @@ -871,7 +875,8 @@ void GraphicsAPI_OpenGL_ES::SetPipeline(void *pipeline) { glEnable(GL_MULTISAMPLE); } else { glDisable(GL_MULTISAMPLE); - }*/ // None for ES + }*/ + // None for ES if (MS.sampleShadingEnable) { glEnable(GL_SAMPLE_SHADING); @@ -897,7 +902,8 @@ void GraphicsAPI_OpenGL_ES::SetPipeline(void *pipeline) { glEnable(GL_SAMPLE_ALPHA_TO_ONE); } else { glDisable(GL_SAMPLE_ALPHA_TO_ONE); - }*/ // None for ES + }*/ + // None for ES // DepthStencilState const DepthStencilState &DSS = pipelineCI.depthStencilState; @@ -920,7 +926,8 @@ void GraphicsAPI_OpenGL_ES::SetPipeline(void *pipeline) { } else { glDisable(GL_DEPTH_BOUNDS_TEST_EXT); } - }*/ // None for ES + }*/ + // None for ES if (DSS.stencilTestEnable) { glEnable(GL_STENCIL_TEST); @@ -956,7 +963,8 @@ void GraphicsAPI_OpenGL_ES::SetPipeline(void *pipeline) { glLogicOp(ToGLLogicOp(CBS.logicOp)); } else { glDisable(GL_COLOR_LOGIC_OP); - }*/ // None for ES + }*/ + // None for ES for (int i = 0; i < (int)CBS.attachments.size(); i++) { const ColorBlendAttachmentState &CBA = CBS.attachments[i]; @@ -1043,7 +1051,7 @@ void GraphicsAPI_OpenGL_ES::SetIndexBuffer(void *indexBuffer) { void GraphicsAPI_OpenGL_ES::DrawIndexed(uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance) { GLenum indexType = buffers[setIndexBuffer].stride == 4 ? GL_UNSIGNED_INT : GL_UNSIGNED_SHORT; - glDrawElementsInstanced(ToGLTopology(pipelines[setPipeline].inputAssemblyState.topology),indexCount, indexType, nullptr,instanceCount); + glDrawElementsInstanced(ToGLTopology(pipelines[setPipeline].inputAssemblyState.topology), indexCount, indexType, nullptr, instanceCount); } void GraphicsAPI_OpenGL_ES::Draw(uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance) { diff --git a/Common/GraphicsAPI_OpenGL_ES.h b/Common/GraphicsAPI_OpenGL_ES.h index a198e23..49bbf7f 100644 --- a/Common/GraphicsAPI_OpenGL_ES.h +++ b/Common/GraphicsAPI_OpenGL_ES.h @@ -83,7 +83,7 @@ class GraphicsAPI_OpenGL_ES : public GraphicsAPI { PFN_xrGetOpenGLESGraphicsRequirementsKHR xrGetOpenGLESGraphicsRequirementsKHR = nullptr; XrGraphicsBindingOpenGLESAndroidKHR graphicsBinding{}; - std::unordered_map < XrSwapchain, std::pair>> swapchainImagesMap{}; + std::unordered_map>> swapchainImagesMap{}; std::unordered_map buffers{}; std::unordered_map images{}; diff --git a/Common/GraphicsAPI_Vulkan.h b/Common/GraphicsAPI_Vulkan.h index 3f36bde..a91f7c1 100644 --- a/Common/GraphicsAPI_Vulkan.h +++ b/Common/GraphicsAPI_Vulkan.h @@ -36,7 +36,7 @@ class GraphicsAPI_Vulkan : public GraphicsAPI { VkImage image = swapchainImagesMap[swapchain].second[index].image; VkImageLayout layout = swapchainImagesMap[swapchain].first == SwapchainType::COLOR ? VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL : VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; imageStates[image] = layout; - return (void *)image; + return (void*)image; } // XR_DOCS_TAG_END_GetSwapchainImage_Vulkan @@ -133,6 +133,5 @@ class GraphicsAPI_Vulkan : public GraphicsAPI { VkPipeline setPipeline = VK_NULL_HANDLE; std::unordered_map> cmdBufferDescriptorSets; std::vector> writeDescSets; - }; #endif diff --git a/Common/xr_linear_algebra.h b/Common/xr_linear_algebra.h index b1138c1..0d2ce00 100644 --- a/Common/xr_linear_algebra.h +++ b/Common/xr_linear_algebra.h @@ -132,7 +132,7 @@ static const XrColor4f XrColorCyan = {0.0f, 1.0f, 1.0f, 1.0f}; static const XrColor4f XrColorLightGrey = {0.7f, 0.7f, 0.7f, 1.0f}; static const XrColor4f XrColorDarkGrey = {0.3f, 0.3f, 0.3f, 1.0f}; -//typedef enum GraphicsAPI_Type { GRAPHICS_VULKAN, GRAPHICS_OPENGL, GRAPHICS_OPENGL_ES, GRAPHICS_D3D } GraphicsAPI_Type; +// typedef enum GraphicsAPI_Type { GRAPHICS_VULKAN, GRAPHICS_OPENGL, GRAPHICS_OPENGL_ES, GRAPHICS_D3D } GraphicsAPI_Type; // Column-major, pre-multiplied. This type does not exist in the OpenXR API and is provided for convenience. typedef struct XrMatrix4x4f { diff --git a/GraphicsAPI_Test/CMakeLists.txt b/GraphicsAPI_Test/CMakeLists.txt index fe5f6cc..c2931e9 100644 --- a/GraphicsAPI_Test/CMakeLists.txt +++ b/GraphicsAPI_Test/CMakeLists.txt @@ -10,12 +10,11 @@ include(FetchContent) # openxr_loader - From github.com/KhronosGroup FetchContent_Declare( OpenXR - EXCLUDE_FROM_ALL - DOWNLOAD_EXTRACT_TIMESTAMP + EXCLUDE_FROM_ALL DOWNLOAD_EXTRACT_TIMESTAMP URL_HASH MD5=f52248ef83da9134bec2b2d8e0970677 URL https://github.com/KhronosGroup/OpenXR-SDK-Source/archive/refs/tags/release-1.1.49.tar.gz - SOURCE_DIR - openxr + SOURCE_DIR + openxr ) FetchContent_MakeAvailable(OpenXR) diff --git a/GraphicsAPI_Test/main.cpp b/GraphicsAPI_Test/main.cpp index 1403bed..724f874 100644 --- a/GraphicsAPI_Test/main.cpp +++ b/GraphicsAPI_Test/main.cpp @@ -77,21 +77,21 @@ void CreateResources() { #define CUBE_FACE(V1, V2, V3, V4, V5, V6) vertexPositions[V1], vertexPositions[V2], vertexPositions[V3], vertexPositions[V4], vertexPositions[V5], vertexPositions[V6], XrVector4f cubeVertices[] = { - CUBE_FACE(2, 1, 0, 2, 3, 1) // -X - CUBE_FACE(6, 4, 5, 6, 5, 7) // +X - CUBE_FACE(0, 1, 5, 0, 5, 4) // -Y - CUBE_FACE(2, 6, 7, 2, 7, 3) // +Y - CUBE_FACE(0, 4, 6, 0, 6, 2) // -Z - CUBE_FACE(1, 3, 7, 1, 7, 5) // +Z + CUBE_FACE(2, 1, 0, 2, 3, 1) // -X + CUBE_FACE(6, 4, 5, 6, 5, 7) // +X + CUBE_FACE(0, 1, 5, 0, 5, 4) // -Y + CUBE_FACE(2, 6, 7, 2, 7, 3) // +Y + CUBE_FACE(0, 4, 6, 0, 6, 2) // -Z + CUBE_FACE(1, 3, 7, 1, 7, 5) // +Z }; uint32_t cubeIndices[36] = { - 0, 1, 2, 3, 4, 5, // -X - 6, 7, 8, 9, 10, 11, // +X - 12, 13, 14, 15, 16, 17, // -Y - 18, 19, 20, 21, 22, 23, // +Y - 24, 25, 26, 27, 28, 29, // -Z - 30, 31, 32, 33, 34, 35, // +Z + 0, 1, 2, 3, 4, 5, // -X + 6, 7, 8, 9, 10, 11, // +X + 12, 13, 14, 15, 16, 17, // -Y + 18, 19, 20, 21, 22, 23, // +Y + 24, 25, 26, 27, 28, 29, // -Z + 30, 31, 32, 33, 34, 35, // +Z }; vertexBuffer = graphicsAPI->CreateBuffer( {GraphicsAPI::BufferCreateInfo::Type::VERTEX, sizeof(float) * 4, sizeof(cubeVertices), @@ -187,46 +187,40 @@ void RenderCuboid(XrPosef pose, XrVector3f scale) { graphicsAPI->DrawIndexed(36); } -void DrawTestObject() -{ - - // Compute the view-projection transform. - // All matrices (including OpenXR's) are column-major, right-handed. - XrMatrix4x4f proj; - XrFovf fov={-.5f,.5f,.5f,-.5f}; - XrMatrix4x4f_CreateProjectionFov(&proj, OPENGL_ES, fov, 0.05f, 100.0f); - XrMatrix4x4f toView; - XrVector3f scale1m{1.0f, 1.0f, 1.0f}; - XrVector3f view_position={0,0,0}; - XrQuaternionf view_orientation={0,0,0,1.0f}; - XrMatrix4x4f_CreateTranslationRotationScale(&toView, &view_position, &view_orientation, &scale1m); - XrMatrix4x4f view; - XrMatrix4x4f_InvertRigidBody(&view, &toView); - XrMatrix4x4f_Multiply(&cameraConstants.viewProj, &proj, &view); - - // Let's draw a cuboid at the floor. Scale it by 2 in the X and Z, and 0.1 in the Y, - RenderCuboid({{0.0f, 0.0f, 0.0f, 1.0f}, {0.0f, -1.5f, 0.0f}}, {2.0f, 0.1f, 2.0f}); - float scale=1.0f; - static float time=0.f; - time+=0.1f; - float angleRad=float(time)*0.002f; - for(int i=0;i<4;i++) - { - float x=scale*(float(i)-1.5f); - for(int j=0;j<4;j++) - { - float y=scale*(float(j)-1.5f); - for(int k=0;k<4;k++) - { - float z=scale*(float(k)-1.5f); - XrQuaternionf q; - XrVector3f axis={0,0.707f,0.707f}; - XrQuaternionf_CreateFromAxisAngle(&q,&axis,angleRad); - RenderCuboid({q, {x,y,z}}, {0.1f, 0.2f, 0.1f}); - - } - } - } +void DrawTestObject() { + // Compute the view-projection transform. + // All matrices (including OpenXR's) are column-major, right-handed. + XrMatrix4x4f proj; + XrFovf fov = {-.5f, .5f, .5f, -.5f}; + XrMatrix4x4f_CreateProjectionFov(&proj, OPENGL_ES, fov, 0.05f, 100.0f); + XrMatrix4x4f toView; + XrVector3f scale1m{1.0f, 1.0f, 1.0f}; + XrVector3f view_position = {0, 0, 0}; + XrQuaternionf view_orientation = {0, 0, 0, 1.0f}; + XrMatrix4x4f_CreateTranslationRotationScale(&toView, &view_position, &view_orientation, &scale1m); + XrMatrix4x4f view; + XrMatrix4x4f_InvertRigidBody(&view, &toView); + XrMatrix4x4f_Multiply(&cameraConstants.viewProj, &proj, &view); + + // Let's draw a cuboid at the floor. Scale it by 2 in the X and Z, and 0.1 in the Y, + RenderCuboid({{0.0f, 0.0f, 0.0f, 1.0f}, {0.0f, -1.5f, 0.0f}}, {2.0f, 0.1f, 2.0f}); + float scale = 1.0f; + static float time = 0.f; + time += 0.1f; + float angleRad = float(time) * 0.002f; + for (int i = 0; i < 4; i++) { + float x = scale * (float(i) - 1.5f); + for (int j = 0; j < 4; j++) { + float y = scale * (float(j) - 1.5f); + for (int k = 0; k < 4; k++) { + float z = scale * (float(k) - 1.5f); + XrQuaternionf q; + XrVector3f axis = {0, 0.707f, 0.707f}; + XrQuaternionf_CreateFromAxisAngle(&q, &axis, angleRad); + RenderCuboid({q, {x, y, z}}, {0.1f, 0.2f, 0.1f}); + } + } + } } int main() { @@ -308,7 +302,7 @@ int main() { imageViewCI.layerCount = 1; void *depthImageView = graphicsAPI->CreateImageView(imageViewCI); - //CreateResources(); + // CreateResources(); struct CameraConstants { XrMatrix4x4f viewProj; @@ -355,22 +349,22 @@ int main() { 30, 31, 32, 33, 34, 35, // +Z }; - void* vertexBuffer = graphicsAPI->CreateBuffer( + void *vertexBuffer = graphicsAPI->CreateBuffer( {GraphicsAPI::BufferCreateInfo::Type::VERTEX, sizeof(float) * 4, sizeof(cubeVertices), &cubeVertices}); - void* indexBuffer = graphicsAPI->CreateBuffer( + void *indexBuffer = graphicsAPI->CreateBuffer( {GraphicsAPI::BufferCreateInfo::Type::INDEX, sizeof(uint32_t), sizeof(cubeIndices), &cubeIndices}); - void* uniformBuffer_Frag = graphicsAPI->CreateBuffer( + void *uniformBuffer_Frag = graphicsAPI->CreateBuffer( {GraphicsAPI::BufferCreateInfo::Type::UNIFORM, 0, sizeof(colors), colors}); - void* uniformBuffer_Vert = graphicsAPI->CreateBuffer( + void *uniformBuffer_Vert = graphicsAPI->CreateBuffer( {GraphicsAPI::BufferCreateInfo::Type::UNIFORM, 0, sizeof(CameraConstants), &cameraConstants}); void *vertexShader = nullptr; - void *fragmentShader = nullptr; + void *fragmentShader = nullptr; if (apiType == OPENGL) { std::string vertexSource = ReadTextFile("VertexShader.glsl"); vertexShader = graphicsAPI->CreateShader({GraphicsAPI::ShaderCreateInfo::Type::VERTEX, vertexSource.data(), vertexSource.size()}); @@ -412,7 +406,7 @@ int main() { pipelineCI.colorFormats = {swapchainFormat}; pipelineCI.depthFormat = graphicsAPI->GetDepthFormat(); pipelineCI.layout = {{1, nullptr, GraphicsAPI::DescriptorInfo::Type::BUFFER, GraphicsAPI::DescriptorInfo::Stage::VERTEX, false}, {0, nullptr, GraphicsAPI::DescriptorInfo::Type::BUFFER, GraphicsAPI::DescriptorInfo::Stage::FRAGMENT, false}}; - void* pipeline = graphicsAPI->CreatePipeline(pipelineCI); + void *pipeline = graphicsAPI->CreatePipeline(pipelineCI); // Main Render Loop while (!g_WindowQuit) { @@ -435,7 +429,7 @@ int main() { float fov_deg_v = 90.0f; float fov_deg_h = fov_deg_v * (float(height) / float(width)); XrFovf fov; - fov.angleLeft = -(fov_deg_h /2.0f); + fov.angleLeft = -(fov_deg_h / 2.0f); fov.angleRight = +(fov_deg_h / 2.0f); fov.angleUp = -(fov_deg_v / 2.0f); fov.angleDown = +(fov_deg_v / 2.0f); @@ -447,11 +441,10 @@ int main() { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 1.0f - }; + 0.0f, 0.0f, 0.0f, 1.0f}; XrMatrix4x4f_Multiply(&cameraConstants.viewProj, &proj, &view); XrVector3f scale = {1.0f, 1.0f, 1.0f}; - XrPosef pose = { {0.0f, 0.0f, 0.0f, 1.0f}, {0.0f, 0.0f, -2.0f} }; + XrPosef pose = {{0.0f, 0.0f, 0.0f, 1.0f}, {0.0f, 0.0f, -2.0f}}; XrMatrix4x4f_CreateTranslationRotationScale(&cameraConstants.model, &pose.position, &pose.orientation, &scale); XrMatrix4x4f_Multiply(&cameraConstants.modelViewProj, &cameraConstants.viewProj, &cameraConstants.model); @@ -459,7 +452,7 @@ int main() { graphicsAPI->SetBufferData(uniformBuffer_Vert, 0, sizeof(CameraConstants), &cameraConstants); graphicsAPI->SetDescriptor({1, uniformBuffer_Vert, GraphicsAPI::DescriptorInfo::Type::BUFFER, GraphicsAPI::DescriptorInfo::Stage::VERTEX, false}); - graphicsAPI->SetBufferData(uniformBuffer_Frag, 0, sizeof(colors), (void*)colors); + graphicsAPI->SetBufferData(uniformBuffer_Frag, 0, sizeof(colors), (void *)colors); graphicsAPI->SetDescriptor({0, uniformBuffer_Frag, GraphicsAPI::DescriptorInfo::Type::BUFFER, GraphicsAPI::DescriptorInfo::Stage::FRAGMENT, false}); graphicsAPI->UpdateDescriptors(); diff --git a/cmake/FindEGL.cmake b/cmake/FindEGL.cmake index 6c3e015..6a17b50 100644 --- a/cmake/FindEGL.cmake +++ b/cmake/FindEGL.cmake @@ -76,17 +76,15 @@ endif() set(EGL_DEFINITIONS ${PKG_EGL_CFLAGS_OTHER}) -find_path(EGL_INCLUDE_DIR - NAMES - EGL/egl.h - HINTS - ${PKG_EGL_INCLUDE_DIRS} +find_path( + EGL_INCLUDE_DIR + NAMES EGL/egl.h + HINTS ${PKG_EGL_INCLUDE_DIRS} ) -find_library(EGL_LIBRARY - NAMES - EGL - HINTS - ${PKG_EGL_LIBRARY_DIRS} +find_library( + EGL_LIBRARY + NAMES EGL + HINTS ${PKG_EGL_LIBRARY_DIRS} ) # NB: We do *not* use the version information from pkg-config, as that @@ -97,21 +95,20 @@ if(EGL_INCLUDE_DIR) # EGL_VERSION_1_1. Finding the highest supported version involves # finding all these defines and selecting the highest numbered. file(READ "${EGL_INCLUDE_DIR}/EGL/egl.h" _EGL_header_contents) - string(REGEX MATCHALL - "[ \t]EGL_VERSION_[0-9_]+" - _EGL_version_lines - "${_EGL_header_contents}" + string( + REGEX MATCHALL "[ \t]EGL_VERSION_[0-9_]+" _EGL_version_lines + "${_EGL_header_contents}" ) unset(_EGL_header_contents) foreach(_EGL_version_line ${_EGL_version_lines}) - string(REGEX REPLACE - "[ \t]EGL_VERSION_([0-9_]+)" - "\\1" - _version_candidate - "${_EGL_version_line}" + string( + REGEX REPLACE "[ \t]EGL_VERSION_([0-9_]+)" "\\1" _version_candidate + "${_EGL_version_line}" ) string(REPLACE "_" "." _version_candidate "${_version_candidate}") - if(NOT DEFINED EGL_VERSION OR EGL_VERSION VERSION_LESS _version_candidate) + if(NOT DEFINED EGL_VERSION OR EGL_VERSION VERSION_LESS + _version_candidate + ) set(EGL_VERSION "${_version_candidate}") endif() endforeach() @@ -122,13 +119,16 @@ cmake_push_check_state(RESET) list(APPEND CMAKE_REQUIRED_LIBRARIES "${EGL_LIBRARY}") list(APPEND CMAKE_REQUIRED_INCLUDES "${EGL_INCLUDE_DIR}") -check_cxx_source_compiles(" +check_cxx_source_compiles( + " #include int main(int argc, char *argv[]) { EGLint x = 0; EGLDisplay dpy = 0; EGLContext ctx = 0; eglDestroyContext(dpy, ctx); -}" HAVE_EGL) +}" + HAVE_EGL +) cmake_pop_check_state() @@ -138,25 +138,25 @@ if(NOT EMSCRIPTEN) endif() include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(EGL - FOUND_VAR - EGL_FOUND - REQUIRED_VARS - ${required_vars} - VERSION_VAR - EGL_VERSION +find_package_handle_standard_args( + EGL + FOUND_VAR EGL_FOUND + REQUIRED_VARS ${required_vars} + VERSION_VAR EGL_VERSION ) if(EGL_FOUND AND NOT TARGET EGL::EGL) - if (EMSCRIPTEN) + if(EMSCRIPTEN) add_library(EGL::EGL INTERFACE IMPORTED) # Nothing further to be done, system include paths have headers and linkage is implicit. else() add_library(EGL::EGL UNKNOWN IMPORTED) - set_target_properties(EGL::EGL PROPERTIES - IMPORTED_LOCATION "${EGL_LIBRARY}" - INTERFACE_COMPILE_OPTIONS "${EGL_DEFINITIONS}" - INTERFACE_INCLUDE_DIRECTORIES "${EGL_INCLUDE_DIR}" + set_target_properties( + EGL::EGL + PROPERTIES + IMPORTED_LOCATION "${EGL_LIBRARY}" + INTERFACE_COMPILE_OPTIONS "${EGL_DEFINITIONS}" + INTERFACE_INCLUDE_DIRECTORIES "${EGL_INCLUDE_DIR}" ) endif() endif() @@ -169,7 +169,9 @@ set(EGL_INCLUDE_DIRS ${EGL_INCLUDE_DIR}) set(EGL_VERSION_STRING ${EGL_VERSION}) include(FeatureSummary) -set_package_properties(EGL PROPERTIES +set_package_properties( + EGL PROPERTIES URL "https://www.khronos.org/egl/" - DESCRIPTION "A platform-independent mechanism for creating rendering surfaces for use with other graphics libraries, such as OpenGL|ES and OpenVG." + DESCRIPTION + "A platform-independent mechanism for creating rendering surfaces for use with other graphics libraries, such as OpenGL|ES and OpenVG." ) diff --git a/cmake/FindOpenGLES.cmake b/cmake/FindOpenGLES.cmake index b16a1d3..0a0d1ca 100644 --- a/cmake/FindOpenGLES.cmake +++ b/cmake/FindOpenGLES.cmake @@ -48,7 +48,8 @@ The following cache variable may also be set to assist/control the operation of set(OpenGLES_ROOT_DIR "${OpenGLES_ROOT_DIR}" - CACHE PATH "Root to search for OpenGLES") + CACHE PATH "Root to search for OpenGLES" +) if(NOT OpenGLES_FIND_COMPONENTS) set(OpenGLES_FIND_COMPONENTS V2) @@ -74,55 +75,70 @@ find_path( NAMES GLES/gl.h PATHS ${OpenGLES_ROOT_DIR} HINTS ${PC_glesv2_INCLUDE_DIRS} ${PC_glesv1_cm_INCLUDE_DIRS} - PATH_SUFFIXES include) + PATH_SUFFIXES include +) find_path( OpenGLES_V2_INCLUDE_DIR NAMES GLES2/gl2.h PATHS ${OpenGLES_ROOT_DIR} HINTS ${PC_glesv2_INCLUDE_DIRS} ${PC_glesv1_cm_INCLUDE_DIRS} - PATH_SUFFIXES include) + PATH_SUFFIXES include +) find_path( OpenGLES_V3_INCLUDE_DIR NAMES GLES3/gl3.h PATHS ${OpenGLES_ROOT_DIR} HINTS ${OpenGLES_V1_INCLUDE_DIR} ${OpenGLES_V2_INCLUDE_DIR} ${PC_glesv2_INCLUDE_DIRS} ${PC_glesv1_cm_INCLUDE_DIRS} - PATH_SUFFIXES include) + PATH_SUFFIXES include +) find_path( OpenGLES_V31_INCLUDE_DIR NAMES GLES3/gl31.h PATHS ${OpenGLES_ROOT_DIR} - HINTS ${OpenGLES_V1_INCLUDE_DIR} ${OpenGLES_V2_INCLUDE_DIR} - ${OpenGLES_V3_INCLUDE_DIR} ${PC_glesv2_INCLUDE_DIRS} - ${PC_glesv1_cm_INCLUDE_DIRS} - PATH_SUFFIXES include) + HINTS + ${OpenGLES_V1_INCLUDE_DIR} + ${OpenGLES_V2_INCLUDE_DIR} + ${OpenGLES_V3_INCLUDE_DIR} + ${PC_glesv2_INCLUDE_DIRS} + ${PC_glesv1_cm_INCLUDE_DIRS} + PATH_SUFFIXES include +) find_path( OpenGLES_V32_INCLUDE_DIR NAMES GLES3/gl32.h PATHS ${OpenGLES_ROOT_DIR} - HINTS ${OpenGLES_V1_INCLUDE_DIR} ${OpenGLES_V2_INCLUDE_DIR} - ${OpenGLES_V3_INCLUDE_DIR} ${OpenGLES_V31_INCLUDE_DIR} - ${PC_glesv2_INCLUDE_DIRS} ${PC_glesv1_cm_INCLUDE_DIRS} - PATH_SUFFIXES include) + HINTS + ${OpenGLES_V1_INCLUDE_DIR} + ${OpenGLES_V2_INCLUDE_DIR} + ${OpenGLES_V3_INCLUDE_DIR} + ${OpenGLES_V31_INCLUDE_DIR} + ${PC_glesv2_INCLUDE_DIRS} + ${PC_glesv1_cm_INCLUDE_DIRS} + PATH_SUFFIXES include +) find_library( OpenGLES_V1_LIBRARY NAMES GLES GLESv1_CM PATHS ${OpenGLES_ROOT_DIR} HINTS ${PC_glesv1_cm_LIBRARY_DIRS} - PATH_SUFFIXES lib) + PATH_SUFFIXES lib +) find_library( OpenGLES_V2_LIBRARY NAMES GLESv2 OpenGLES # for Apple framework PATHS ${OpenGLES_ROOT_DIR} HINTS ${PC_glesv2_LIBRARY_DIRS} - PATH_SUFFIXES lib) + PATH_SUFFIXES lib +) find_library( OpenGLES_V3_LIBRARY NAMES GLESv3 PATHS ${OpenGLES_ROOT_DIR} HINTS ${PC_glesv2_LIBRARY_DIRS} - PATH_SUFFIXES lib) + PATH_SUFFIXES lib +) if(OpenGLES_V2_LIBRARY AND NOT OpenGLES_V3_LIBRARY) set(OpenGLES_V3_LIBRARY ${OpenGLES_V2_LIBRARY}) @@ -131,32 +147,40 @@ endif() set(_gles_required_vars) foreach(_comp IN LISTS OpenGLES_FIND_COMPONENTS) if(_comp STREQUAL "V1") - list(APPEND _gles_required_vars OpenGLES_V1_LIBRARY - OpenGLES_V1_INCLUDE_DIR) + list( + APPEND _gles_required_vars OpenGLES_V1_LIBRARY + OpenGLES_V1_INCLUDE_DIR + ) if(OpenGLES_V1_INCLUDE_DIR AND OpenGLES_V1_LIBRARY) set(OpenGLES_${_comp}_FOUND TRUE) else() set(OpenGLES_${_comp}_FOUND FALSE) endif() elseif(_comp STREQUAL "V2") - list(APPEND _gles_required_vars OpenGLES_V2_LIBRARY - OpenGLES_V2_INCLUDE_DIR) + list( + APPEND _gles_required_vars OpenGLES_V2_LIBRARY + OpenGLES_V2_INCLUDE_DIR + ) if(OpenGLES_V2_INCLUDE_DIR AND OpenGLES_V2_LIBRARY) set(OpenGLES_${_comp}_FOUND TRUE) else() set(OpenGLES_${_comp}_FOUND FALSE) endif() elseif(_comp STREQUAL "V3") - list(APPEND _gles_required_vars OpenGLES_V3_LIBRARY - OpenGLES_V3_INCLUDE_DIR) + list( + APPEND _gles_required_vars OpenGLES_V3_LIBRARY + OpenGLES_V3_INCLUDE_DIR + ) if(OpenGLES_V3_INCLUDE_DIR AND OpenGLES_V3_LIBRARY) set(OpenGLES_${_comp}_FOUND TRUE) else() set(OpenGLES_${_comp}_FOUND FALSE) endif() elseif(_comp STREQUAL "V31") - list(APPEND _gles_required_vars OpenGLES_V3_LIBRARY - OpenGLES_V31_INCLUDE_DIR) + list( + APPEND _gles_required_vars OpenGLES_V3_LIBRARY + OpenGLES_V31_INCLUDE_DIR + ) if(OpenGLES_V31_INCLUDE_DIR AND OpenGLES_V3_LIBRARY) set(OpenGLES_${_comp}_FOUND TRUE) @@ -164,8 +188,10 @@ foreach(_comp IN LISTS OpenGLES_FIND_COMPONENTS) set(OpenGLES_${_comp}_FOUND FALSE) endif() elseif(_comp STREQUAL "V32") - list(APPEND _gles_required_vars OpenGLES_V3_LIBRARY - OpenGLES_V32_INCLUDE_DIR) + list( + APPEND _gles_required_vars OpenGLES_V3_LIBRARY + OpenGLES_V32_INCLUDE_DIR + ) if(OpenGLES_V32_INCLUDE_DIR AND OpenGLES_V3_LIBRARY) set(OpenGLES_${_comp}_FOUND TRUE) else() @@ -173,7 +199,8 @@ foreach(_comp IN LISTS OpenGLES_FIND_COMPONENTS) endif() else() message( - WARNING "${_comp} is not a recognized OpenGL-ES component/version") + WARNING "${_comp} is not a recognized OpenGL-ES component/version" + ) set(OpenGLES_${_comp}_FOUND FALSE) endif() endforeach() @@ -185,27 +212,30 @@ include(FindPackageHandleStandardArgs) find_package_handle_standard_args( OpenGLES REQUIRED_VARS ${_gles_required_vars} - HANDLE_COMPONENTS) + HANDLE_COMPONENTS +) if(OpenGLES_FOUND) if(OpenGLES_V1_FOUND AND NOT TARGET OpenGLES::OpenGLESv1) add_library(OpenGLES::OpenGLESv1 SHARED IMPORTED) set_target_properties( OpenGLES::OpenGLESv1 - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES - "${OpenGLES_V1_INCLUDE_DIR}" - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION ${OpenGLES_V1_LIBRARY}) + PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${OpenGLES_V1_INCLUDE_DIR}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION ${OpenGLES_V1_LIBRARY} + ) endif() if(OpenGLES_V2_FOUND AND NOT TARGET OpenGLES::OpenGLESv2) add_library(OpenGLES::OpenGLESv2 SHARED IMPORTED) set_target_properties( OpenGLES::OpenGLESv2 - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES - "${OpenGLES_V2_INCLUDE_DIR}" - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION ${OpenGLES_V2_LIBRARY}) + PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${OpenGLES_V2_INCLUDE_DIR}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION ${OpenGLES_V2_LIBRARY} + ) endif() if(OpenGLES_V3_FOUND) if(NOT TARGET OpenGLES::OpenGLESv3) @@ -213,30 +243,33 @@ if(OpenGLES_FOUND) set_target_properties( OpenGLES::OpenGLESv3 - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES - "${OpenGLES_V3_INCLUDE_DIR}" - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION ${OpenGLES_V3_LIBRARY}) + PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${OpenGLES_V3_INCLUDE_DIR}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION ${OpenGLES_V3_LIBRARY} + ) endif() if(OpenGLES_V31_FOUND AND NOT TARGET OpenGLES::OpenGLESv31) add_library(OpenGLES::OpenGLESv31 SHARED IMPORTED) set_target_properties( OpenGLES::OpenGLESv31 - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES - "${OpenGLES_V31_INCLUDE_DIR}" - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION ${OpenGLES_V3_LIBRARY}) + PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${OpenGLES_V31_INCLUDE_DIR}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION ${OpenGLES_V3_LIBRARY} + ) endif() if(OpenGLES_V32_FOUND AND NOT TARGET OpenGLES::OpenGLESv32) add_library(OpenGLES::OpenGLESv32 SHARED IMPORTED) set_target_properties( OpenGLES::OpenGLESv32 - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES - "${OpenGLES_V32_INCLUDE_DIR}" - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION ${OpenGLES_V3_LIBRARY}) + PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${OpenGLES_V32_INCLUDE_DIR}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION ${OpenGLES_V3_LIBRARY} + ) endif() endif() mark_as_advanced( @@ -247,7 +280,8 @@ if(OpenGLES_FOUND) OpenGLES_V3_LIBRARY OpenGLES_V3_INCLUDE_DIR OpenGLES_V31_INCLUDE_DIR - OpenGLES_V32_INCLUDE_DIR) + OpenGLES_V32_INCLUDE_DIR + ) endif() mark_as_advanced(OpenGLES_ROOT_DIR) diff --git a/cmake/fxc_shader.cmake b/cmake/fxc_shader.cmake index 4a13eb2..e3915aa 100644 --- a/cmake/fxc_shader.cmake +++ b/cmake/fxc_shader.cmake @@ -48,23 +48,17 @@ function(fxc_shader) OUTPUT "${_fxc_OUTPUT}" BYPRODUCTS "${_fxc_OUTPUT_PDB}" COMMAND - "${_fxc}" - /nologo - ${_fxc_output_args} ${_fxc_OUTPUT} + "${_fxc}" /nologo ${_fxc_output_args} ${_fxc_OUTPUT} $<$,$>:/Fd> $<$,$>:${_fxc_OUTPUT_PDB}> - /T${_fxc_PROFILE} - /E${_fxc_ENTRY_POINT} - $<$:/Od> + /T${_fxc_PROFILE} /E${_fxc_ENTRY_POINT} $<$:/Od> $<$:/Zss> $<$,$>:/Zi> "${_fxc_INPUT}" MAIN_DEPENDENCY "${_fxc_INPUT}" DEPENDS "${_fxc_INPUT}" ${_fxc_EXTRA_DEPENDS} COMMENT "FXC: ${_fxc_INPUT}" - USES_TERMINAL - VERBATIM - COMMAND_EXPAND_LISTS + USES_TERMINAL VERBATIM COMMAND_EXPAND_LISTS ) endfunction() diff --git a/cmake/glsl_shader.cmake b/cmake/glsl_shader.cmake index e4a4257..8ca30dd 100644 --- a/cmake/glsl_shader.cmake +++ b/cmake/glsl_shader.cmake @@ -55,14 +55,12 @@ function(glsl_spv_shader) add_custom_command( OUTPUT "${_glsl_spv_OUTPUT}" COMMAND - "${GLSL_COMPILER}" - -o "${_glsl_spv_OUTPUT}" + "${GLSL_COMPILER}" -o "${_glsl_spv_OUTPUT}" "-fshader-stage=${_glsl_spv_STAGE}" "-fentry-point=${_glsl_spv_ENTRY_POINT}" $,$>,-g,> $,-O0,-O> - "--target-env=${_glsl_spv_TARGET_ENV}" - "${_glsl_spv_INPUT}" + "--target-env=${_glsl_spv_TARGET_ENV}" "${_glsl_spv_INPUT}" MAIN_DEPENDENCY "${_glsl_spv_INPUT}" DEPENDS "${_glsl_spv_INPUT}" ${_glsl_spv_EXTRA_DEPENDS} USES_TERMINAL VERBATIM COMMAND_EXPAND_LISTS @@ -71,16 +69,11 @@ function(glsl_spv_shader) add_custom_command( OUTPUT "${_glsl_spv_OUTPUT}" COMMAND - "${GLSLANG_VALIDATOR}" - -o "${_glsl_spv_OUTPUT}" - -S "${_glsl_spv_STAGE}" - -e "${_glsl_spv_ENTRY_POINT}" - $<$:-gVS> - $<$:-Od> - $<$:-g0> - "--target-env" "${_glsl_spv_TARGET_ENV}" - -V - "${_glsl_spv_INPUT}" + "${GLSLANG_VALIDATOR}" -o "${_glsl_spv_OUTPUT}" -S + "${_glsl_spv_STAGE}" -e "${_glsl_spv_ENTRY_POINT}" + $<$:-gVS> $<$:-Od> + $<$:-g0> "--target-env" + "${_glsl_spv_TARGET_ENV}" -V "${_glsl_spv_INPUT}" MAIN_DEPENDENCY "${_glsl_spv_INPUT}" DEPENDS "${_glsl_spv_INPUT}" ${_glsl_spv_EXTRA_DEPENDS} USES_TERMINAL VERBATIM COMMAND_EXPAND_LISTS diff --git a/cmake/graphics_api_select.cmake b/cmake/graphics_api_select.cmake index 0736edf..de81a7a 100644 --- a/cmake/graphics_api_select.cmake +++ b/cmake/graphics_api_select.cmake @@ -4,14 +4,20 @@ include_guard() +set(XR_TUTORIAL_GRAPHICS_API + "VULKAN" + CACHE STRING + "Which graphics API to use when building the tutorial projects." +) -set(XR_TUTORIAL_GRAPHICS_API "VULKAN" CACHE STRING "Which graphics API to use when building the tutorial projects.") - -IF(DEFINED ENV{GFX}) - message(STATUS, "Overriding graphics api: " $ENV{GFX} ) +if(DEFINED ENV{GFX}) + message(STATUS, "Overriding graphics api: " $ENV{GFX}) set_property(CACHE XR_TUTORIAL_GRAPHICS_API PROPERTY VALUE $ENV{GFX}) endif() function(AddGraphicsAPIDefine PROJECT_NAME) - target_compile_definitions(${PROJECT_NAME} PUBLIC XR_TUTORIAL_GRAPHICS_API=${XR_TUTORIAL_GRAPHICS_API}) + target_compile_definitions( + ${PROJECT_NAME} + PUBLIC XR_TUTORIAL_GRAPHICS_API=${XR_TUTORIAL_GRAPHICS_API} + ) endfunction(AddGraphicsAPIDefine) diff --git a/cmake/presentation.cmake b/cmake/presentation.cmake index f65189c..ccf2d72 100644 --- a/cmake/presentation.cmake +++ b/cmake/presentation.cmake @@ -7,14 +7,22 @@ set(PRESENTATION_BACKEND xlib CACHE STRING "Presentation backend chosen at configure time" ) -set_property(CACHE PRESENTATION_BACKEND PROPERTY STRINGS ${PRESENTATION_BACKENDS}) +set_property( + CACHE PRESENTATION_BACKEND PROPERTY STRINGS ${PRESENTATION_BACKENDS} +) list(FIND PRESENTATION_BACKENDS ${PRESENTATION_BACKEND} index) if(index EQUAL -1) - message(FATAL_ERROR "Presentation backend must be one of ${PRESENTATION_BACKENDS}") + message( + FATAL_ERROR + "Presentation backend must be one of ${PRESENTATION_BACKENDS}" + ) endif() -message(STATUS "Presentation backend selected for hello_xr, loader_test, conformance: ${PRESENTATION_BACKEND}") +message( + STATUS + "Presentation backend selected for hello_xr, loader_test, conformance: ${PRESENTATION_BACKEND}" +) find_package(X11) @@ -29,13 +37,24 @@ endif() include(CMakeDependentOption) cmake_dependent_option( - BUILD_WITH_XLIB_HEADERS "Build with support for X11/Xlib-related features." ON "X11_FOUND" OFF + BUILD_WITH_XLIB_HEADERS + "Build with support for X11/Xlib-related features." + ON + "X11_FOUND" + OFF ) cmake_dependent_option( - BUILD_WITH_XCB_HEADERS "Build with support for XCB-related features." ON "X11_FOUND AND XCB_FOUND AND XCB_GLX_FOUND" OFF + BUILD_WITH_XCB_HEADERS + "Build with support for XCB-related features." + ON + "X11_FOUND AND XCB_FOUND AND XCB_GLX_FOUND" + OFF ) cmake_dependent_option( - BUILD_WITH_WAYLAND_HEADERS "Build with support for Wayland-related features." ON "WAYLAND_CLIENT_FOUND" + BUILD_WITH_WAYLAND_HEADERS + "Build with support for Wayland-related features." + ON + "WAYLAND_CLIENT_FOUND" OFF ) @@ -51,19 +70,27 @@ if(PRESENTATION_BACKEND MATCHES "xlib") ) endif() if(BUILD_TESTS AND (NOT X11_Xxf86vm_LIB OR NOT X11_Xrandr_LIB)) - message(FATAL_ERROR "OpenXR tests using xlib backend requires Xxf86vm and Xrandr") + message( + FATAL_ERROR + "OpenXR tests using xlib backend requires Xxf86vm and Xrandr" + ) endif() if(TARGET tutorial_glwrapper) target_compile_definitions(tutorial_glwrapper PUBLIC OS_LINUX_XLIB) - target_link_libraries(tutorial_glwrapper PRIVATE ${X11_X11_LIB} ${X11_Xxf86vm_LIB} ${X11_Xrandr_LIB}) + target_link_libraries( + tutorial_glwrapper PRIVATE ${X11_X11_LIB} ${X11_Xxf86vm_LIB} + ${X11_Xrandr_LIB} + ) # OpenGL::OpenGL already linked, we just need to add GLX. if(TARGET OpenGL::GLX) target_link_libraries(tutorial_glwrapper PUBLIC OpenGL::GLX) else() if(${OPENGL_glx_LIBRARY}) - target_link_libraries(tutorial_glwrapper PUBLIC ${OPENGL_glx_LIBRARY}) + target_link_libraries( + tutorial_glwrapper PUBLIC ${OPENGL_glx_LIBRARY} + ) endif() target_link_libraries(tutorial_glwrapper PUBLIC ${OPENGL_LIBRARIES}) endif() @@ -87,7 +114,10 @@ elseif(PRESENTATION_BACKEND MATCHES "xcb") # XCB + Xlib GLX 1.3 target_compile_definitions(tutorial_glwrapper PUBLIC OS_LINUX_XCB_GLX) - target_link_libraries(tutorial_glwrapper PRIVATE ${X11_X11_LIB} ${XCB_KEYSYMS_LIBRARIES} ${XCB_RANDR_LIBRARIES}) + target_link_libraries( + tutorial_glwrapper PRIVATE ${X11_X11_LIB} ${XCB_KEYSYMS_LIBRARIES} + ${XCB_RANDR_LIBRARIES} + ) endif() elseif(PRESENTATION_BACKEND MATCHES "wayland") @@ -112,48 +142,66 @@ elseif(PRESENTATION_BACKEND MATCHES "wayland") pkg_get_variable(WAYLAND_SCANNER wayland-scanner wayland_scanner) set(PROTOCOL xdg-shell-unstable-v6) - set(PROTOCOL_XML ${WAYLAND_PROTOCOLS_DATADIR}/unstable/xdg-shell/${PROTOCOL}.xml) + set(PROTOCOL_XML + ${WAYLAND_PROTOCOLS_DATADIR}/unstable/xdg-shell/${PROTOCOL}.xml + ) if(NOT EXISTS ${PROTOCOL_XML}) - message(FATAL_ERROR "xdg-shell-unstable-v6.xml not found in " ${WAYLAND_PROTOCOLS_DATADIR} - "\nYour wayland-protocols package does not " "contain xdg-shell-unstable-v6." + message( + FATAL_ERROR + "xdg-shell-unstable-v6.xml not found in " + ${WAYLAND_PROTOCOLS_DATADIR} + "\nYour wayland-protocols package does not " + "contain xdg-shell-unstable-v6." ) endif() add_custom_command( OUTPUT ${WAYLAND_PROTOCOLS_DIR}/${PROTOCOL}.c - COMMAND ${WAYLAND_SCANNER} code ${PROTOCOL_XML} ${WAYLAND_PROTOCOLS_DIR}/${PROTOCOL}.c + COMMAND + ${WAYLAND_SCANNER} code ${PROTOCOL_XML} + ${WAYLAND_PROTOCOLS_DIR}/${PROTOCOL}.c VERBATIM ) add_custom_command( OUTPUT ${WAYLAND_PROTOCOLS_DIR}/${PROTOCOL}.h - COMMAND ${WAYLAND_SCANNER} client-header ${PROTOCOL_XML} ${WAYLAND_PROTOCOLS_DIR}/${PROTOCOL}.h + COMMAND + ${WAYLAND_SCANNER} client-header ${PROTOCOL_XML} + ${WAYLAND_PROTOCOLS_DIR}/${PROTOCOL}.h VERBATIM ) - target_sources(tutorial_glwrapper - PRIVATE - ${WAYLAND_PROTOCOLS_DIR}/${PROTOCOL}.c - ${WAYLAND_PROTOCOLS_DIR}/${PROTOCOL}.h + target_sources( + tutorial_glwrapper PRIVATE ${WAYLAND_PROTOCOLS_DIR}/${PROTOCOL}.c + ${WAYLAND_PROTOCOLS_DIR}/${PROTOCOL}.h ) - target_include_directories(tutorial_glwrapper PUBLIC ${WAYLAND_PROTOCOLS_DIR} ${WAYLAND_CLIENT_INCLUDE_DIRS}) + target_include_directories( + tutorial_glwrapper PUBLIC ${WAYLAND_PROTOCOLS_DIR} + ${WAYLAND_CLIENT_INCLUDE_DIRS} + ) target_link_libraries( - tutorial_glwrapper PRIVATE ${EGL_LIBRARIES} ${WAYLAND_CLIENT_LIBRARIES} ${WAYLAND_EGL_LIBRARIES} + tutorial_glwrapper + PRIVATE ${EGL_LIBRARIES} ${WAYLAND_CLIENT_LIBRARIES} + ${WAYLAND_EGL_LIBRARIES} ) target_compile_definitions(tutorial_glwrapper PUBLIC OS_LINUX_WAYLAND) - target_link_libraries(tutorial_glwrapper PRIVATE ${EGL_LIBRARIES} ${WAYLAND_CLIENT_LIBRARIES}) + target_link_libraries( + tutorial_glwrapper PRIVATE ${EGL_LIBRARIES} + ${WAYLAND_CLIENT_LIBRARIES} + ) endif() endif() - if(TARGET tutorial_glwrapper AND NOT (PRESENTATION_BACKEND MATCHES "wayland")) if(TARGET OpenGL::GLX) # OpenGL::OpenGL already linked, we just need to add GLX. target_link_libraries(tutorial_glwrapper PUBLIC OpenGL::GLX) else() if(${OPENGL_glx_LIBRARY}) - target_link_libraries(tutorial_glwrapper PUBLIC ${OPENGL_glx_LIBRARY}) + target_link_libraries( + tutorial_glwrapper PUBLIC ${OPENGL_glx_LIBRARY} + ) endif() - target_link_libraries(tutorial_glwrapper PUBLIC ${OPENGL_LIBRARIES}) + target_link_libraries(tutorial_glwrapper PUBLIC ${OPENGL_LIBRARIES}) endif() endif() diff --git a/thirdparty/glwrapper/CMakeLists.txt b/thirdparty/glwrapper/CMakeLists.txt index 73061fc..6c13513 100644 --- a/thirdparty/glwrapper/CMakeLists.txt +++ b/thirdparty/glwrapper/CMakeLists.txt @@ -6,7 +6,6 @@ include(${CMAKE_CURRENT_LIST_DIR}/glad2/CMakeLists.txt) - if(NOT TARGET tutorial_glwrapper) if(ANDROID) find_package(OpenGLES REQUIRED COMPONENTS V31) @@ -17,20 +16,23 @@ if(NOT TARGET tutorial_glwrapper) if(OpenGL_FOUND OR OpenGLES_FOUND) add_library( - tutorial_glwrapper STATIC - ${CMAKE_CURRENT_LIST_DIR}/gfxwrapper_opengl.c + tutorial_glwrapper STATIC + ${CMAKE_CURRENT_LIST_DIR}/gfxwrapper_opengl.c ) target_include_directories( - tutorial_glwrapper PUBLIC - ${CMAKE_CURRENT_LIST_DIR} + tutorial_glwrapper PUBLIC ${CMAKE_CURRENT_LIST_DIR} ) if(ANDROID) - target_link_libraries(tutorial_glwrapper PUBLIC tutorial-glad-loader) target_link_libraries( - tutorial_glwrapper PUBLIC ${OpenGLES_V3_LIBRARY} EGL::EGL + tutorial_glwrapper PUBLIC tutorial-glad-loader + ) + target_link_libraries( + tutorial_glwrapper PUBLIC ${OpenGLES_V3_LIBRARY} EGL::EGL ) else() - target_link_libraries(tutorial_glwrapper PUBLIC OpenGL::GL tutorial-glad-loader) + target_link_libraries( + tutorial_glwrapper PUBLIC OpenGL::GL tutorial-glad-loader + ) endif() endif() diff --git a/thirdparty/glwrapper/glad2/CMakeLists.txt b/thirdparty/glwrapper/glad2/CMakeLists.txt index 84e90ef..ce26420 100644 --- a/thirdparty/glwrapper/glad2/CMakeLists.txt +++ b/thirdparty/glwrapper/glad2/CMakeLists.txt @@ -2,47 +2,52 @@ # # SPDX-License-Identifier: Apache-2.0 -if (NOT TARGET tutorial-glad-loader) -add_library(tutorial-glad-loader STATIC ${CMAKE_CURRENT_LIST_DIR}/src/gl.c) +if(NOT TARGET tutorial-glad-loader) + add_library(tutorial-glad-loader STATIC ${CMAKE_CURRENT_LIST_DIR}/src/gl.c) -target_include_directories(tutorial-glad-loader PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include) -target_link_libraries(tutorial-glad-loader PRIVATE ${CMAKE_DL_LIBS}) - - -# cause xr_dependencies.h to include glad versions of headers instead of standard ones -target_compile_definitions(tutorial-glad-loader PUBLIC XRDEPENDENCIES_USE_GLAD) - -if(WIN32) - target_sources( - tutorial-glad-loader PRIVATE ${CMAKE_CURRENT_LIST_DIR}/src/wgl.c + target_include_directories( + tutorial-glad-loader PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include ) -else() - target_sources( - tutorial-glad-loader PRIVATE ${CMAKE_CURRENT_LIST_DIR}/src/egl.c + target_link_libraries(tutorial-glad-loader PRIVATE ${CMAKE_DL_LIBS}) + + # cause xr_dependencies.h to include glad versions of headers instead of standard ones + target_compile_definitions( + tutorial-glad-loader PUBLIC XRDEPENDENCIES_USE_GLAD ) -endif() -if(WIN32 AND OPENGL_FOUND) - if(TARGET OpenGL::OpenGL) - target_link_libraries(tutorial-glad-loader PUBLIC OpenGL::OpenGL) - elseif(TARGET OpenGL::GL) - target_link_libraries(tutorial-glad-loader PUBLIC OpenGL::GL) + if(WIN32) + target_sources( + tutorial-glad-loader PRIVATE ${CMAKE_CURRENT_LIST_DIR}/src/wgl.c + ) else() - target_link_libraries(tutorial-glad-loader PUBLIC ${OPENGL_LIBRARIES}) + target_sources( + tutorial-glad-loader PRIVATE ${CMAKE_CURRENT_LIST_DIR}/src/egl.c + ) endif() -endif() -if(ANDROID) - target_compile_definitions(tutorial-glad-loader PUBLIC GLAD_GLES2) -endif() + if(WIN32 AND OPENGL_FOUND) + if(TARGET OpenGL::OpenGL) + target_link_libraries(tutorial-glad-loader PUBLIC OpenGL::OpenGL) + elseif(TARGET OpenGL::GL) + target_link_libraries(tutorial-glad-loader PUBLIC OpenGL::GL) + else() + target_link_libraries( + tutorial-glad-loader PUBLIC ${OPENGL_LIBRARIES} + ) + endif() + endif() + + if(ANDROID) + target_compile_definitions(tutorial-glad-loader PUBLIC GLAD_GLES2) + endif() -if(NOT WIN32 - AND NOT ANDROID - AND NOT APPLE -) - target_sources( - tutorial-glad-loader PRIVATE ${CMAKE_CURRENT_LIST_DIR}/src/glx.c + if(NOT WIN32 + AND NOT ANDROID + AND NOT APPLE ) -endif() + target_sources( + tutorial-glad-loader PRIVATE ${CMAKE_CURRENT_LIST_DIR}/src/glx.c + ) + endif() endif() diff --git a/tutorial/FindSphinx.cmake b/tutorial/FindSphinx.cmake index 990f979..57814c1 100644 --- a/tutorial/FindSphinx.cmake +++ b/tutorial/FindSphinx.cmake @@ -1,11 +1,13 @@ #Look for an executable called sphinx-build -find_program(SPHINX_EXECUTABLE - NAMES sphinx-build - DOC "Path to sphinx-build executable") +find_program( + SPHINX_EXECUTABLE + NAMES sphinx-build + DOC "Path to sphinx-build executable" +) include(FindPackageHandleStandardArgs) #Handle standard arguments to find_package like REQUIRED and QUIET -find_package_handle_standard_args(Sphinx - "Failed to find sphinx-build executable" - SPHINX_EXECUTABLE) +find_package_handle_standard_args( + Sphinx "Failed to find sphinx-build executable" SPHINX_EXECUTABLE +)