Skyscraper 2.0
OgreOpenXRState.h
Go to the documentation of this file.
1/*
2 Skyscraper 2.0 - OpenXR State
3 Portions Copyright (C)2024 Ryan Thoryk
4 MIT license - see LICENSE file
5 https://www.skyscrapersim.net
6 https://sourceforge.net/projects/skyscraper/
7 Contact - ryan@skyscrapersim.net
8*/
9
10/*
11 Original work produced by Glastonbridge Software Limited. This code is provided under the MIT license.
12 https://github.com/glastonbridge/OgreOpenXRRenderWindow
13*/
14
15#pragma once
16
17#include <vector>
18#include <string>
19
20#include "RenderSystems/Direct3D11/OgreD3D11Prerequisites.h"
21
22#include "OgreOpenXRConfig.h"
23
24#include "RenderSystems/Direct3D11/OgreD3D11Device.h"
25
26#include <openxr/openxr.h>
27#include "XrUtility/XrHandle.h"
28#include "XrUtility/XrError.h"
30#include <winrt/base.h>
31#include <memory>
32#include "OgreOpenXRInstance.h"
33
34namespace Ogre {
35
40 public:
42 void Initialize(const std::string& applicationName);
43 void InitializeSystem();
44 const LUID GetAdapterLUID();
47 const uint64_t GetSystemId();
48 void GetSystemProperties(XrSystemProperties& systemProperties);
49 std::tuple<DXGI_FORMAT, DXGI_FORMAT> SelectSwapchainPixelFormats();
50 void initializeSession(D3D11Device& device);
51 constexpr static XrViewConfigurationType primaryViewConfigType{ XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO };
52 XrEnvironmentBlendMode* GetEnvironmentBlendModes();
54
55 private:
56 std::unique_ptr<OpenXRInstance> m_xrInstance;
57 uint64_t _systemId;
59 std::vector<XrEnvironmentBlendMode> environmentBlendModes;
60
61 constexpr static XrFormFactor _formFactor{ XR_FORM_FACTOR_HEAD_MOUNTED_DISPLAY };
62
64 XrReferenceSpaceType _appSpaceType{ XR_REFERENCE_SPACE_TYPE_LOCAL };
65 };
66}
void initializeSession(D3D11Device &device)
std::vector< XrEnvironmentBlendMode > environmentBlendModes
const LUID GetAdapterLUID()
xr::SpaceHandle _appSpace
void GetSystemProperties(XrSystemProperties &systemProperties)
const uint64_t GetSystemId()
xr::SpaceHandle & getAppSpace()
static constexpr XrViewConfigurationType primaryViewConfigType
void Initialize(const std::string &applicationName)
XrEnvironmentBlendMode * GetEnvironmentBlendModes()
static constexpr XrFormFactor _formFactor
xr::SessionHandle _sessionHandle
const xr::InstanceHandle & GetInstanceHandle()
std::unique_ptr< OpenXRInstance > m_xrInstance
XrReferenceSpaceType _appSpaceType
std::tuple< DXGI_FORMAT, DXGI_FORMAT > SelectSwapchainPixelFormats()
xr::SessionHandle & GetSession()