Simulated Reality SDK 7500c78d v1.30.2.51085 2024-04-26T11:23:03Z
Stable
Public Member Functions | List of all members
SR::PredictingDX11Weaver Class Reference

#include <dx11weaver.h>

Inheritance diagram for SR::PredictingDX11Weaver:
[legend]
Collaboration diagram for SR::PredictingDX11Weaver:
[legend]

Public Member Functions

 PredictingDX11Weaver (SR::SRContext &context, ID3D11Device *device, ID3D11DeviceContext *deviceContext, unsigned int width, unsigned int height)
 Constructs a class to be used for weaving an input image of a certain size. More...
 
 PredictingDX11Weaver (SR::SRContext &context, ID3D11Device *device, ID3D11DeviceContext *deviceContext, unsigned int width, unsigned int height, HWND window)
 Constructs a class to be used for weaving an input image of a certain size. More...
 
 PredictingDX11Weaver (SR::SRContext &context, ID3D11Device *device, ID3D11DeviceContext *deviceContext, unsigned int width, unsigned int height, DXGI_FORMAT format)
 Constructs a class to be used for weaving an input image of a certain size and format. More...
 
 PredictingDX11Weaver (SR::SRContext &context, ID3D11Device *device, ID3D11DeviceContext *deviceContext, unsigned int width, unsigned int height, DXGI_FORMAT format, HWND window)
 Constructs a class to be used for weaving an input image of a certain size and format. More...
 
 ~PredictingDX11Weaver ()
 Handles proper destruction of all weaver related classes and buffers. More...
 
void setLatency (uint64_t latency)
 Set the latency to match the expected duration of the full rendering pipeline. More...
 
void setLatencyInFrames (uint64_t latencyInFrames)
 Set the latency to match the expected duration of the full rendering pipeline in number of frames. The latency in time is calculated using these number of frames based on the refresh rate of the monitor that the application is running on, this will be dynamically updated when the window changes monitor. For this it requires the weaver to be given a valid window handle of the running application. More...
 
- Public Member Functions inherited from SR::DX11WeaverBase
 DX11WeaverBase ()
 
 ~DX11WeaverBase ()
 
ID3D11RenderTargetView * getFrameBuffer ()
 Returns the buffer that will be used to create a weaved image. This buffer expects a side-by-side image. When a frame buffer is provided by calling setInputFrameBuffer(), the internally created buffer will be released. More...
 
void setInputFrameBuffer (ID3D11ShaderResourceView *frameBuffer)
 Sets the buffer that will be used to create a weaved image. This will release the internally created frame buffer. More...
 
void setContext (ID3D11DeviceContext *context)
 Sets the device context for the weaver to use. More...
 
void setWindowHandle (HWND handle)
 Sets the window handle of the application window. If the weaver was created using a deprecated constructor, setting window handle has no effect. More...
 
bool canWeave ()
 Used to determine if software weaving is possible on this device. More...
 
bool canWeave (unsigned int width, unsigned int height)
 Used to determine if software weaving is possible for certain size and visibility to the currently bound framebuffer. More...
 
bool canWeave (unsigned int width, unsigned int height, unsigned int xOffset, unsigned int yOffset)
 Used to determine if software weaving is possible for certain size and visibility to the currently bound framebuffer. More...
 
void weave (unsigned int width, unsigned int height)
 Can be called to render a weaved image of a certain size to the currently bound framebuffer A framebuffer must be set before calling this function. More...
 
void weave (unsigned int width, unsigned int height, unsigned int xOffset, unsigned int yOffset)
 Can be called to render a weaved image of a certain size to the currently bound framebuffer A framebuffer must be set before calling this function. More...
 

Additional Inherited Members

- Protected Attributes inherited from SR::DX11WeaverBase
std::unique_ptr< Impl > pimpl
 

Constructor & Destructor Documentation

◆ PredictingDX11Weaver() [1/4]

SR::PredictingDX11Weaver::PredictingDX11Weaver ( SR::SRContext context,
ID3D11Device *  device,
ID3D11DeviceContext *  deviceContext,
unsigned int  width,
unsigned int  height 
)

Constructs a class to be used for weaving an input image of a certain size.

Deprecated:
Parameters
contextto connect to, needs to be valid for the lifetime of the weaver object.
deviceinterface used to create resources
deviceContextto be used for rendering commands
widthof the side-by-side image to be weaved together
heightof the side-by-side image to be weaved together

◆ PredictingDX11Weaver() [2/4]

SR::PredictingDX11Weaver::PredictingDX11Weaver ( SR::SRContext context,
ID3D11Device *  device,
ID3D11DeviceContext *  deviceContext,
unsigned int  width,
unsigned int  height,
HWND  window 
)

Constructs a class to be used for weaving an input image of a certain size.

Parameters
contextto connect to
deviceinterface used to create resources
deviceContextto be used for rendering commands
widthof the side-by-side image to be weaved together
heightof the side-by-side image to be weaved together
windowHandle of the application window

◆ PredictingDX11Weaver() [3/4]

SR::PredictingDX11Weaver::PredictingDX11Weaver ( SR::SRContext context,
ID3D11Device *  device,
ID3D11DeviceContext *  deviceContext,
unsigned int  width,
unsigned int  height,
DXGI_FORMAT  format 
)

Constructs a class to be used for weaving an input image of a certain size and format.

Deprecated:
Parameters
contextto connect to
deviceinterface used to create resources
deviceContextto be used for rendering commands
widthof the side-by-side image to be weaved together
heightof the side-by-side image to be weaved together
formatof the side-by-side image to be weaved together

◆ PredictingDX11Weaver() [4/4]

SR::PredictingDX11Weaver::PredictingDX11Weaver ( SR::SRContext context,
ID3D11Device *  device,
ID3D11DeviceContext *  deviceContext,
unsigned int  width,
unsigned int  height,
DXGI_FORMAT  format,
HWND  window 
)

Constructs a class to be used for weaving an input image of a certain size and format.

Deprecated:
Parameters
contextto connect to
deviceinterface used to create resources
deviceContextto be used for rendering commands
widthof the side-by-side image to be weaved together
heightof the side-by-side image to be weaved together
formatof the side-by-side image to be weaved together
windowhandle for windowed weaving support

◆ ~PredictingDX11Weaver()

SR::PredictingDX11Weaver::~PredictingDX11Weaver ( )

Handles proper destruction of all weaver related classes and buffers.

Member Function Documentation

◆ setLatency()

void SR::PredictingDX11Weaver::setLatency ( uint64_t  latency)

Set the latency to match the expected duration of the full rendering pipeline.

The eye positions should be predicted to the timepoint at which the frame is visible to the user Internally the prediction is already taking care of all other latency, only the rendering pipeline latency is application dependent A low latency app would have 1 framebuffer latency, so 16666 microseconds (the generated frame will be presented at next v-sync) When using v-sync, the driver adds at least 1 buffer latency, and maybe the windows display manager also adds a buffer latency. Typically, the latency is n * 1000*1000/framerate microseconds

Parameters
latencyThe latency from the moment when weave() is called until presenting the current frame to the user, in microseconds

◆ setLatencyInFrames()

void SR::PredictingDX11Weaver::setLatencyInFrames ( uint64_t  latencyInFrames)

Set the latency to match the expected duration of the full rendering pipeline in number of frames. The latency in time is calculated using these number of frames based on the refresh rate of the monitor that the application is running on, this will be dynamically updated when the window changes monitor. For this it requires the weaver to be given a valid window handle of the running application.

The eye positions should be predicted to the timepoint at which the frame is visible to the user Internally the prediction is already taking care of all other latency, only the rendering pipeline latency is application dependent A low latency app would have 1 framebuffer latency, the generated frame will be presented at next v-sync) When using v-sync, the driver adds at least 1 buffer latency, and maybe the windows display manager also adds a buffer latency.

Parameters
latencyInFramesThe expected number of frames before presenting the current generated frame to the user.

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