26 #ifndef INCLUDED_RenderManagerConfig_h_GUID_C8DA5781_5B6C_454A_B4FF_1DB50CBE3479
27 #define INCLUDED_RenderManagerConfig_h_GUID_C8DA5781_5B6C_454A_B4FF_1DB50CBE3479
37 #include <json/value.h>
38 #include <json/reader.h>
55 parse(renderManagerConfig);
60 inline void parse(
const std::string &renderManagerConfig)
64 if (!reader.parse(renderManagerConfig, root,
false)) {
65 throw std::runtime_error(
"RenderManagerConfig::parse - failed to parse render manager config string. Invalid JSON value?");
68 auto ¶ms = root[
"renderManagerConfig"];
69 m_directMode = params[
"directModeEnabled"].asBool();
70 m_displayIndex = params[
"directDisplayIndex"].asUInt();
71 m_directHighPriority = params[
"directHighPriorityEnabled"].asBool();
72 m_numBuffers = params[
"numBuffers"].asUInt();
73 m_verticalSync = params[
"verticalSyncEnabled"].asBool();
74 m_verticalSyncBlockRendering = params[
"verticalSyncBlockRenderingEnabled"].asBool();
75 m_renderOverfillFactor = params[
"renderOverfillFactor"].asFloat();
76 m_renderOversampleFactor = params.get(
"renderOversampleFactor", 1).asFloat();
80 auto &window = params[
"window"];
81 m_windowTitle = window[
"title"].asString();
82 m_windowFullScreen = window[
"fullScreenEnabled"].asBool();
83 m_windowXPosition = window[
"xPosition"].asInt();
84 m_windowYPosition = window[
"yPosition"].asInt();
89 auto display = params[
"display"];
90 m_displayRotation = display[
"rotation"].asUInt();
91 m_bitsPerColor = display[
"bitsPerColor"].asUInt();
96 auto &timeWarp = params[
"timeWarp"];
97 m_enableTimeWarp = timeWarp[
"enabled"].asBool();
98 m_asynchronousTimeWarp = timeWarp[
"asynchronous"].asBool();
99 m_maxMSBeforeVsyncTimeWarp = timeWarp[
"maxMsBeforeVSync"].asFloat();
104 auto prediction = params[
"prediction"];
105 m_predictEnabled = prediction[
"enabled"].asBool();
106 m_predictStaticDelayMS = prediction[
"staticDelayMS"].asFloat();
107 m_predictLeftEyeDelayMS = prediction[
"leftEyeDelayMS"].asFloat();
108 m_predictRightEyeDelayMS = prediction[
"rightEyeDelayMS"].asFloat();
109 m_predictLocalTimeOverride = prediction[
"localTimeOverride"].asBool();
113 inline void print()
const
115 std::cout <<
"Direct mode: " << m_directMode << std::endl;
116 std::cout <<
"Direct mode display index: " << m_displayIndex << std::endl;
117 std::cout <<
"Number of buffers: " << m_numBuffers << std::endl;
118 std::cout <<
"Vertical sync: " << m_verticalSync << std::endl;
119 std::cout <<
"Vertical sync block rendering: " << m_verticalSyncBlockRendering << std::endl;
120 std::cout <<
"Window Title: " << m_windowTitle << std::endl;
121 std::cout <<
"Window full screen: " << m_windowFullScreen << std::endl;
122 std::cout <<
"Window X Position: " << m_windowXPosition << std::endl;
123 std::cout <<
"Window Y Position: " << m_windowYPosition << std::endl;
124 std::cout <<
"Display rotation: " << m_displayRotation << std::endl;
125 std::cout <<
"Bits per color: " << m_bitsPerColor << std::endl;
126 std::cout <<
"Prediction enabled: " << m_predictEnabled << std::endl;
127 std::cout <<
"Static delay (ms): " << m_predictStaticDelayMS << std::endl;
128 std::cout <<
"Left eye delay (ms): " << m_predictLeftEyeDelayMS << std::endl;
129 std::cout <<
"Right eye delay (ms): " << m_predictRightEyeDelayMS << std::endl;
130 std::cout <<
"Prediction local time override: " << m_predictLocalTimeOverride << std::endl;
131 std::cout <<
"Enable time warp: " << m_enableTimeWarp << std::endl;
132 std::cout <<
"Asynchronous time warp: " << m_asynchronousTimeWarp << std::endl;
133 std::cout <<
"Max ms before vsync time warp: " << m_maxMSBeforeVsyncTimeWarp << std::endl;
134 std::cout <<
"Render overfill factor: " << m_renderOverfillFactor << std::endl;
135 std::cout <<
"Render oversample factor: " << m_renderOversampleFactor << std::endl;
144 inline uint32_t getDisplayIndex()
const
146 return m_displayIndex;
149 inline bool getDirectHighPriority()
const
151 return m_directHighPriority;
154 inline bool getEnableTimeWarp()
const
156 return m_enableTimeWarp;
159 inline bool getAsynchronousTimeWarp()
const
161 return m_asynchronousTimeWarp;
164 inline float getMaxMSBeforeVsyncTimeWarp()
const
166 return m_maxMSBeforeVsyncTimeWarp;
169 inline float getRenderOverfillFactor()
const
171 return m_renderOverfillFactor;
174 inline float getRenderOversampleFactor()
const
176 return m_renderOversampleFactor;
179 inline std::size_t getNumBuffers()
const
184 inline bool getVerticalSync()
const
186 return m_verticalSync;
189 inline bool getVerticalSyncBlockRendering()
const
191 return m_verticalSyncBlockRendering;
194 inline std::string getWindowTitle()
const
196 return m_windowTitle;
199 inline bool getWindowFullScreen()
const
201 return m_windowFullScreen;
204 inline int32_t getWindowXPosition()
const
206 return m_windowXPosition;
209 inline int32_t getWindowYPosition()
const
211 return m_windowYPosition;
214 inline uint32_t getDisplayRotation()
const
216 return m_displayRotation;
219 inline uint32_t getBitsPerColor()
const
221 return m_bitsPerColor;
224 inline bool getclientPredictionEnabled()
const
226 return m_predictEnabled;
229 inline float getStaticDelayMS()
const
231 return m_predictStaticDelayMS;
234 inline float getLeftEyeDelayMS()
const
236 return m_predictLeftEyeDelayMS;
239 inline float getRightEyeDelayMS()
const
241 return m_predictRightEyeDelayMS;
244 inline bool getclientPredictionLocalTimeOverride()
const
246 return m_predictLocalTimeOverride;
251 uint32_t m_displayIndex;
252 bool m_directHighPriority;
253 std::size_t m_numBuffers;
255 bool m_verticalSyncBlockRendering;
257 std::string m_windowTitle;
258 bool m_windowFullScreen;
259 int32_t m_windowXPosition;
260 int32_t m_windowYPosition;
261 uint32_t m_displayRotation;
262 uint32_t m_bitsPerColor;
263 bool m_predictEnabled;
264 float m_predictStaticDelayMS;
265 float m_predictLeftEyeDelayMS;
266 float m_predictRightEyeDelayMS;
267 bool m_predictLocalTimeOverride;
269 bool m_enableTimeWarp;
270 bool m_asynchronousTimeWarp;
271 float m_maxMSBeforeVsyncTimeWarp;
272 float m_renderOverfillFactor;
273 float m_renderOversampleFactor;
276 typedef std::shared_ptr<RenderManagerConfig> RenderManagerConfigPtr;
287 catch (std::exception
const &e) {
289 "Couldn't create a render manager config internally! Exception: "
290 << e.what() << std::endl;
291 return RenderManagerConfigPtr{};
294 std::cerr <<
"Couldn't create a render manager config internally! "
295 "Unknown exception!" << std::endl;
296 return RenderManagerConfigPtr{};
304 #endif // INCLUDED_RenderManagerConfig_h_GUID_C8DA5781_5B6C_454A_B4FF_1DB50CBE3479
Header containing wrappers for some common jsoncpp operations.
std::string getStringParameter(std::string const &path) const
Gets a string parameter value.
Header declaring opaque types used by Client and ClientKit.
Header to bring unique_ptr into the osvr namespace.
bool getDirectMode() const
Read the property information.
Automatically-generated export header - do not edit!