MCPcopy Create free account
hub / github.com/OSVR/OSVR-Core / getProjectionMatrixImpl

Function getProjectionMatrixImpl

src/osvr/ClientKit/DisplayC.cpp:320–348  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

318
319template <typename Scalar>
320static inline OSVR_ReturnCode
321getProjectionMatrixImpl(OSVR_DisplayConfig disp, OSVR_ViewerCount viewer,
322 OSVR_EyeCount eye, OSVR_SurfaceCount surface,
323 Scalar near, Scalar far, OSVR_MatrixConventions flags,
324 Scalar *mat) {
325 OSVR_VALIDATE_DISPLAY_CONFIG;
326 OSVR_VALIDATE_VIEWER_ID;
327 OSVR_VALIDATE_EYE_ID;
328 OSVR_VALIDATE_SURFACE_ID;
329 OSVR_VALIDATE_OUTPUT_PTR(mat, "projection matrix");
330 if (near == 0 || far == 0) {
331 OSVR_DEV_VERBOSE("Can't specify a near or far distance as 0!");
332 return OSVR_RETURN_FAILURE;
333 }
334 if (near < 0 || far < 0) {
335 OSVR_DEV_VERBOSE("Can't specify a negative near or far distance!");
336 return OSVR_RETURN_FAILURE;
337 }
338 if (near == far) {
339 OSVR_DEV_VERBOSE("Can't specify equal near and far distances!");
340 return OSVR_RETURN_FAILURE;
341 }
342 osvr::util::matrixEigenAssign(
343 disp->cfg->getViewerEyeSurface(viewer, eye, surface)
344 .getProjection(near, far, flags),
345 flags, mat);
346
347 return OSVR_RETURN_SUCCESS;
348}
349
350OSVR_ReturnCode osvrClientGetViewerEyeSurfaceProjectionMatrixd(
351 OSVR_DisplayConfig disp, OSVR_ViewerCount viewer, OSVR_EyeCount eye,

Calls 2

matrixEigenAssignFunction · 0.85
getProjectionMethod · 0.80

Tested by

no test coverage detected