LeiaSR SDK 720218b2 v1.32.7.6322 2025-02-13T14:55:38Z
Stable
dx9weaver.h
Go to the documentation of this file.
1
5#pragma once
6#include <memory>
7#include <d3d9.h>
9#include "sr/weaver/Weaver.h"
10
11#ifdef WIN32
12# ifdef COMPILING_DLL_SimulatedRealityDirectX
13# define DIMENCOSR_API __declspec(dllexport)
14# else
15# define DIMENCOSR_API __declspec(dllimport)
16# endif
17#else
18# define DIMENCOSR_API
19#endif
20
26namespace SR
27{
29 protected:
30 class Impl;
36#pragma warning(suppress: 4251)
37 std::unique_ptr<Impl> pimpl;
38
39 public:
42
51 IDirect3DSurface9* getFrameBuffer();
52
57 void setInputFrameBuffer(IDirect3DTexture9* frameBuffer);
58
63 void setWindowHandle(HWND handle);
64
68 void setContrast(float contrast);
69
73 float getContrast() const;
74
80 void setShaderSRGBConversion(bool read, bool write);
81
86
91
95 void setCrosstalkStaticFactor(float factor);
96
101
105 void setCrosstalkDynamicFactor(float factor);
106
111
119 bool canWeave(unsigned int width, unsigned int height);
120
130 bool canWeave(unsigned int width, unsigned int height, unsigned int xOffset, unsigned int yOffset);
131
138 void weave(unsigned int width, unsigned int height);
139
148 void weave(unsigned int width, unsigned int height, unsigned int xOffset, unsigned int yOffset);
149
154
159 };
160
162 public:
171 [[deprecated("For best performance use the PredictingDX9Weaver interface")]]
172 DX9Weaver(SR::SRContext& context, IDirect3DDevice9* device, unsigned int width, unsigned int height, HWND window, bool inputBufferIsSRGB = false, bool outputBufferIsSRGB = false);
173
178 };
179
181 public:
190 PredictingDX9Weaver(SR::SRContext& context, IDirect3DDevice9* device, unsigned int width, unsigned int height, HWND window, bool inputBufferIsSRGB = false, bool outputBufferIsSRGB = false);
191
196
208 void setLatency(uint64_t latency);
209
218 uint64_t getLatency();
219
232 void setLatencyInFrames(uint64_t latencyInFrames);
233 };
234}
235
236#undef DIMENCOSR_API
enum DIMENCOSR_API WeaverACTMode
Definition: WeaverTypes.h:29
Definition: dx9weaver.h:28
bool canWeave(unsigned int width, unsigned int height)
Used to determine if software weaving is possible for certain size and visibility to the currently bo...
void setCrosstalkDynamicFactor(float factor)
Sets the anti-crosstalk dynamic factor.
float getCrosstalkDynamicFactor() const
Gets the anti-crosstalk dynamic factor.
float getCrosstalkStaticFactor() const
Gets the anti-crosstalk factor.
std::unique_ptr< Impl > pimpl
Definition: dx9weaver.h:30
WeaverACTMode getACTMode() const
Gets the anti-crosstalk mode.
void invalidateDeviceObjects()
Free all resources that were created in the default memory pool. This method should be called before ...
void setACTMode(WeaverACTMode mode)
Sets the anti-crosstalk mode.
void restoreDeviceObjects()
Allocate all resources that are created in the default memory pool. This method should be called afte...
void setWindowHandle(HWND handle)
Sets the window handle of the application window.
void setShaderSRGBConversion(bool read, bool write)
Sets whether to apply shader sRGB<->Linear color space conversions to the input framebuffer during we...
float getContrast() const
Gets the current weaving contrast.
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 framebu...
IDirect3DSurface9 * getFrameBuffer()
Returns the buffer that will be used to create a weaved image. This buffer expects a side-by-side ima...
void setInputFrameBuffer(IDirect3DTexture9 *frameBuffer)
Sets the buffer that will be used to create a weaved image. This will release the internally created ...
void setContrast(float contrast)
Sets the weaving contrast.
void setCrosstalkStaticFactor(float factor)
Sets the anti-crosstalk factor.
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 framebu...
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 bo...
Definition: dx9weaver.h:161
DX9Weaver(SR::SRContext &context, IDirect3DDevice9 *device, unsigned int width, unsigned int height, HWND window, bool inputBufferIsSRGB=false, bool outputBufferIsSRGB=false)
Constructs a class to be used for weaving an input image of a certain size.
~DX9Weaver()
Handles proper destruction of all weaver related classes and buffers.
Definition: dx9weaver.h:180
uint64_t getLatency()
Get the latency that is used by the weaver. If setLatency has been called, the value set by that func...
~PredictingDX9Weaver()
Handles proper destruction of all weaver related classes and buffers.
void setLatencyInFrames(uint64_t latencyInFrames)
Set the latency to match the expected duration of the full rendering pipeline in number of frames....
void setLatency(uint64_t latency)
Set the latency to match the expected duration of the full rendering pipeline.
PredictingDX9Weaver(SR::SRContext &context, IDirect3DDevice9 *device, unsigned int width, unsigned int height, HWND window, bool inputBufferIsSRGB=false, bool outputBufferIsSRGB=false)
Constructs a class to be used for weaving an input image of a certain size.
Maintains WorldObject and Sense objects during the application lifetime.
Definition: srcontext.h:75
#define DIMENCOSR_API
Definition: dx9weaver.h:18
Namespace containing all C++ Simulated Reality classes.
Definition: srconfiguration.h:20