Skyscraper 2.0
Ogre::OpenXRRenderWindow Class Reference
Inheritance diagram for Ogre::OpenXRRenderWindow:
Collaboration diagram for Ogre::OpenXRRenderWindow:

Public Member Functions

 OpenXRRenderWindow (RenderSystem *rsys)
 
 ~OpenXRRenderWindow ()
 
virtual void create (const String &name, unsigned int width, unsigned int height, bool fullScreen, const NameValuePairList *miscParams) override
 
bool requiresTextureFlipping () const
 
void _beginUpdate () override
 
void _endUpdate () override
 
ID3D11Texture2D * getSurface (uint index) const override
 
uint getNumberOfViews () const
 
ID3D11RenderTargetView * getRenderTargetView (uint index) const
 
Viewport * addViewport (Camera *cam, int zOrder=0, float x=0.0f, float y=0.0f, float w=0.0f, float h=0.0f) override
 
void setActiveEye (size_t eye)
 
void notifyDeviceLost (D3D11Device *device)
 
void notifyDeviceRestored (D3D11Device *device)
 

Private Member Functions

bool sessionReady ()
 
bool shouldRender ()
 
void ProcessOpenXREvents ()
 
void _startXrFrame ()
 
void _endXrFrame ()
 

Private Attributes

Ogre::Camera * mEyeCameras [2]
 
size_t mNumberOfEyesAdded = 0
 
size_t mActiveEye = 0
 
ComPtr< ID3D11Texture2D > mpBackBuffer
 
winrt::com_ptr< ID3D11RenderTargetView > mRenderTargetViewL
 
winrt::com_ptr< ID3D11RenderTargetView > mRenderTargetViewR
 
std::unique_ptr< OpenXRStatemXrState
 
std::unique_ptr< OpenXRSwapchainswapchainL
 
std::unique_ptr< OpenXRSwapchainswapchainR
 
std::unique_ptr< OpenXRViewProjectionmViewProjections
 
XrViewState mXrViewState { XR_TYPE_VIEW_STATE }
 
XrSessionState mXrSessionState
 
XrFrameState mXrFrameState { XR_TYPE_FRAME_STATE }
 
XrCompositionLayerProjection mXrLayer { XR_TYPE_COMPOSITION_LAYER_PROJECTION }
 
std::vector< XrCompositionLayerBaseHeader * > mXrLayers
 

Detailed Description

Definition at line 42 of file OgreOpenXRRenderWindow.cpp.

Constructor & Destructor Documentation

◆ OpenXRRenderWindow()

Ogre::OpenXRRenderWindow::OpenXRRenderWindow ( RenderSystem * rsys)

The rendersystem must be a D3D11RenderSystem, because we use it to get the D3D11 device, but we don't request it directly so that the D3D11RenderSystem doesn't need to be linked to the consuming project.

Definition at line 127 of file OgreOpenXRRenderWindow.cpp.

References XROrientation, and XRPosition.

◆ ~OpenXRRenderWindow()

Ogre::OpenXRRenderWindow::~OpenXRRenderWindow ( )

Definition at line 149 of file OgreOpenXRRenderWindow.cpp.

Member Function Documentation

◆ _beginUpdate()

void Ogre::OpenXRRenderWindow::_beginUpdate ( )
override

◆ _endUpdate()

void Ogre::OpenXRRenderWindow::_endUpdate ( )
override

Definition at line 264 of file OgreOpenXRRenderWindow.cpp.

References _endXrFrame(), shouldRender(), swapchainL, and swapchainR.

Here is the call graph for this function:

◆ _endXrFrame()

void Ogre::OpenXRRenderWindow::_endXrFrame ( )
private

Definition at line 412 of file OgreOpenXRRenderWindow.cpp.

References CHECK_XRCMD, mViewProjections, mXrFrameState, mXrLayer, mXrLayers, and mXrState.

Referenced by _endUpdate().

◆ _startXrFrame()

void Ogre::OpenXRRenderWindow::_startXrFrame ( )
private

Definition at line 385 of file OgreOpenXRRenderWindow.cpp.

References CHECK, CHECK_XRCMD, mXrFrameState, mXrLayer, mXrLayers, mXrState, and sessionReady().

Referenced by _beginUpdate().

Here is the call graph for this function:

◆ addViewport()

Viewport * Ogre::OpenXRRenderWindow::addViewport ( Camera * cam,
int zOrder = 0,
float x = 0.0f,
float y = 0.0f,
float w = 0.0f,
float h = 0.0f )
override

Definition at line 295 of file OgreOpenXRRenderWindow.cpp.

References mEyeCameras, and mNumberOfEyesAdded.

◆ create()

void Ogre::OpenXRRenderWindow::create ( const String & name,
unsigned int width,
unsigned int height,
bool fullScreen,
const NameValuePairList * miscParams )
overridevirtual

Ignores everything, yolo

Definition at line 157 of file OgreOpenXRRenderWindow.cpp.

References mViewProjections, mXrState, swapchainL, and swapchainR.

◆ getNumberOfViews()

uint Ogre::OpenXRRenderWindow::getNumberOfViews ( ) const

Definition at line 276 of file OgreOpenXRRenderWindow.cpp.

◆ getRenderTargetView()

ID3D11RenderTargetView * Ogre::OpenXRRenderWindow::getRenderTargetView ( uint index) const

Definition at line 286 of file OgreOpenXRRenderWindow.cpp.

References mActiveEye, mRenderTargetViewL, and mRenderTargetViewR.

◆ getSurface()

ID3D11Texture2D * Ogre::OpenXRRenderWindow::getSurface ( uint index) const
override

Definition at line 281 of file OgreOpenXRRenderWindow.cpp.

References mActiveEye, swapchainL, and swapchainR.

◆ notifyDeviceLost()

void Ogre::OpenXRRenderWindow::notifyDeviceLost ( D3D11Device * device)

Definition at line 316 of file OgreOpenXRRenderWindow.cpp.

◆ notifyDeviceRestored()

void Ogre::OpenXRRenderWindow::notifyDeviceRestored ( D3D11Device * device)

Definition at line 319 of file OgreOpenXRRenderWindow.cpp.

◆ ProcessOpenXREvents()

void Ogre::OpenXRRenderWindow::ProcessOpenXREvents ( )
private

◆ requiresTextureFlipping()

bool Ogre::OpenXRRenderWindow::requiresTextureFlipping ( ) const
inline

Definition at line 58 of file OgreOpenXRRenderWindow.cpp.

◆ sessionReady()

bool Ogre::OpenXRRenderWindow::sessionReady ( )
inlineprivate

Definition at line 97 of file OgreOpenXRRenderWindow.cpp.

Referenced by _startXrFrame(), and setActiveEye().

◆ setActiveEye()

void Ogre::OpenXRRenderWindow::setActiveEye ( size_t eye)

Definition at line 308 of file OgreOpenXRRenderWindow.cpp.

References mActiveEye, mpBackBuffer, sessionReady(), swapchainL, and swapchainR.

Here is the call graph for this function:

◆ shouldRender()

bool Ogre::OpenXRRenderWindow::shouldRender ( )
inlineprivate

Definition at line 98 of file OgreOpenXRRenderWindow.cpp.

Referenced by _beginUpdate(), and _endUpdate().

Member Data Documentation

◆ mActiveEye

size_t Ogre::OpenXRRenderWindow::mActiveEye = 0
private

Definition at line 78 of file OgreOpenXRRenderWindow.cpp.

Referenced by getRenderTargetView(), getSurface(), and setActiveEye().

◆ mEyeCameras

Ogre::Camera* Ogre::OpenXRRenderWindow::mEyeCameras[2]
private

Definition at line 76 of file OgreOpenXRRenderWindow.cpp.

Referenced by _beginUpdate(), and addViewport().

◆ mNumberOfEyesAdded

size_t Ogre::OpenXRRenderWindow::mNumberOfEyesAdded = 0
private

Definition at line 77 of file OgreOpenXRRenderWindow.cpp.

Referenced by _beginUpdate(), and addViewport().

◆ mpBackBuffer

ComPtr<ID3D11Texture2D> Ogre::OpenXRRenderWindow::mpBackBuffer
private

Definition at line 80 of file OgreOpenXRRenderWindow.cpp.

Referenced by _beginUpdate(), and setActiveEye().

◆ mRenderTargetViewL

winrt::com_ptr<ID3D11RenderTargetView> Ogre::OpenXRRenderWindow::mRenderTargetViewL
private

Definition at line 81 of file OgreOpenXRRenderWindow.cpp.

Referenced by _beginUpdate(), and getRenderTargetView().

◆ mRenderTargetViewR

winrt::com_ptr<ID3D11RenderTargetView> Ogre::OpenXRRenderWindow::mRenderTargetViewR
private

Definition at line 82 of file OgreOpenXRRenderWindow.cpp.

Referenced by _beginUpdate(), and getRenderTargetView().

◆ mViewProjections

std::unique_ptr<OpenXRViewProjection> Ogre::OpenXRRenderWindow::mViewProjections
private

Definition at line 87 of file OgreOpenXRRenderWindow.cpp.

Referenced by _beginUpdate(), _endXrFrame(), and create().

◆ mXrFrameState

XrFrameState Ogre::OpenXRRenderWindow::mXrFrameState { XR_TYPE_FRAME_STATE }
private

Definition at line 93 of file OgreOpenXRRenderWindow.cpp.

Referenced by _beginUpdate(), _endXrFrame(), and _startXrFrame().

◆ mXrLayer

XrCompositionLayerProjection Ogre::OpenXRRenderWindow::mXrLayer { XR_TYPE_COMPOSITION_LAYER_PROJECTION }
private

Definition at line 94 of file OgreOpenXRRenderWindow.cpp.

Referenced by _endXrFrame(), and _startXrFrame().

◆ mXrLayers

std::vector<XrCompositionLayerBaseHeader*> Ogre::OpenXRRenderWindow::mXrLayers
private

Definition at line 95 of file OgreOpenXRRenderWindow.cpp.

Referenced by _endXrFrame(), and _startXrFrame().

◆ mXrSessionState

XrSessionState Ogre::OpenXRRenderWindow::mXrSessionState
private

Definition at line 91 of file OgreOpenXRRenderWindow.cpp.

Referenced by ProcessOpenXREvents().

◆ mXrState

std::unique_ptr<OpenXRState> Ogre::OpenXRRenderWindow::mXrState
private

◆ mXrViewState

XrViewState Ogre::OpenXRRenderWindow::mXrViewState { XR_TYPE_VIEW_STATE }
private

Definition at line 89 of file OgreOpenXRRenderWindow.cpp.

Referenced by _beginUpdate().

◆ swapchainL

std::unique_ptr<OpenXRSwapchain> Ogre::OpenXRRenderWindow::swapchainL
private

Definition at line 85 of file OgreOpenXRRenderWindow.cpp.

Referenced by _beginUpdate(), _endUpdate(), create(), getSurface(), and setActiveEye().

◆ swapchainR

std::unique_ptr<OpenXRSwapchain> Ogre::OpenXRRenderWindow::swapchainR
private

Definition at line 86 of file OgreOpenXRRenderWindow.cpp.

Referenced by _beginUpdate(), _endUpdate(), create(), getSurface(), and setActiveEye().


The documentation for this class was generated from the following file: