gvr:: GvrApi
#include <gvr.h>
This is a convenience C++ wrapper for the Google VR C API.
Summary
This wrapper strategy prevents ABI compatibility issues between compilers by ensuring that the interface between client code and the implementation code in libgvr.so is a pure C interface. The translation from C++ calls to C calls provided by this wrapper runs entirely in the client's binary and is compiled by the client's compiler.
Methods in this class are only documented insofar as the C++ wrapping logic is concerned; for information about the method itself, please refer to the corresponding function in the C API.
Example API usage:
// Functionality supplied by the application in the example below has // the "app-" prefix. #ifdef __ANDROID__ // On Android, the gvr_context should almost always be obtained from the // Java GvrLayout object via // GvrLayout.getGvrApi().getNativeGvrContext(). std::unique_ptrgvr = GvrApi::WrapNonOwned(gvr_context); #else std::unique_ptr gvr = GvrApi::Create(); #endif gvr->InitializeGl(); gvr::BufferViewportList viewport_list = gvr->CreateEmptyBufferViewportList(); gvr->GetRecommendedBufferViewports(&viewport_list); gvr::BufferViewport left_eye_viewport = gvr->CreateBufferViewport(); gvr::BufferViewport right_eye_viewport = gvr->CreateBufferViewport(); viewport_list.Get(0, &left_eye_view); viewport_list.Get(1, &right_eye_view); std::vector<gvr::BufferSpec> specs; specs.push_back(gvr->CreateBufferSpec()); specs[0].SetSamples(app_samples); gvr::SwapChain swap_chain = gvr->CreateSwapChain(specs); while (client_app_should_render) { // A client app should be ready for the render target size to change // whenever a new QR code is scanned, or a new viewer is paired. gvr::Sizei render_target_size = gvr->GetRecommendedRenderTargetSize(); swap_chain.ResizeBuffer(0, render_target_size); gvr::Frame frame = swap_chain.AcquireFrame(); while (!frame) { std::this_thread::sleep_for(2ms); frame = swap_chain.AcquireFrame(); } // This function will depend on your render loop's implementation. gvr::ClockTimePoint next_vsync = AppGetNextVsyncTime(); const gvr::Mat4f head_view = gvr->GetHeadSpaceFromStartSpaceRotation(next_vsync); const gvr::Mat4f left_eye_view = MatrixMultiply( gvr->GetEyeFromHeadMatrix(kLeftEye), head_view); const gvr::Mat4f right_eye_view = MatrixMultiply( gvr->GetEyeFromHeadMatrix(kRightEye), head_view); frame.BindBuffer(0); // App does its rendering to the current framebuffer here. AppDoSomeRenderingForEye( left_eye_viewport.GetSourceUv(), left_eye_view); AppDoSomeRenderingForEye( right_eye_viewport.GetSourceUv(), right_eye_view); frame.Unbind(); frame.Submit(viewport_list, head_view); }
Constructors and Destructors |
|
---|---|
GvrApi(const GvrApi &)
|
|
~GvrApi()
|
Error handling |
|
---|---|
ClearError()
|
For more information, see gvr_clear_error().
|
GetCurrentProperties()
|
For more information, see gvr_get_current_properties().
|
GetError()
|
For more information, see gvr_get_error().
|
GetErrorString(Error error_code)
|
const char *
For more information, see gvr_get_error_string().
|
GetUserPrefs() const
|
For more information, see gvr_get_user_prefs().
|
PollEvent(Event *event_out)
|
bool
For more information, see gvr_poll_event().
|
Rendering |
|
---|---|
BindDefaultFramebuffer()
|
void
For more information, see gvr_bind_default_framebuffer().
|
CreateBufferSpec()
|
For more information, see gvr_buffer_spec_create().
|
CreateBufferViewport() const
|
Constructs a C++ wrapper for a gvr_buffer_viewport object.
|
CreateEmptyBufferViewportList() const
|
Constructs a C++ wrapper for a gvr_buffer_viewport_list object.
|
CreateSwapChain(const std::vector< BufferSpec > & specs)
|
For more information, see gvr_swap_chain_create().
|
DistortToScreen(int32_t texture_id, const BufferViewportList & viewport_list, const Mat4f & rendered_head_pose_in_start_space_matrix, const ClockTimePoint & texture_presentation_time)
|
void
For more information, see gvr_distort_to_screen().
|
GetAsyncReprojectionEnabled() const
|
bool
For more information, see gvr_get_async_reprojection_enabled().
|
GetMaximumEffectiveRenderTargetSize() const
|
For more information, see gvr_get_maximum_effective_render_target_size().
|
GetScreenTargetSize() const
|
For more information, see gvr_get_screen_target_size().
|
InitializeGl()
|
void
For more information, see gvr_initialize_gl().
|
IsFeatureSupported(int32_t feature) const
|
bool
For more information, see gvr_is_feature_supported().
|
RequestFeatures(const int32_t *required_features, int32_t required_count, const int32_t *optional_features, int32_t optional_count, void *on_complete_activity) const
|
void
For more information, see gvr_request_features().
|
SetSurfaceSize(Sizei surface_size_pixels)
|
void
For more information, see gvr_set_surface_size().
|
Head tracking |
|
---|---|
ApplyNeckModel(const Mat4f & head_space_from_start_space_rotation, float factor) const
|
For more information, see gvr_apply_neck_model().
|
GetHeadSpaceFromStartSpaceRotation(const ClockTimePoint & time_point) const
|
For more information see gvr_get_head_space_from_start_space_rotation.
|
GetHeadSpaceFromStartSpaceTransform(const ClockTimePoint & time_point) const
|
For more information see gvr_get_head_space_from_start_space_transform.
|
GetTimePointNow()
|
For more information, see gvr_get_time_point_now().
|
PauseTracking()
|
void
For more information, see gvr_pause_tracking().
|
RecenterTracking()
|
void
|
ResetTracking()
|
void
For more information, see gvr_reset_tracking().
|
ResumeTracking()
|
void
For more information, see gvr_resume_tracking().
|
Viewer parameters |
|
---|---|
ComputeDistortedPoint(Eye eye, const Vec2f & uv_in)
|
std::array< Vec2f, 3 >
For more information, see gvr_compute_distorted_point().
|
GetEyeFromHeadMatrix(Eye eye) const
|
For more information, see gvr_get_eye_from_head_matrix().
|
GetViewerModel() const
|
const char *
For more information, see gvr_get_viewer_model().
|
GetViewerType() const
|
For more information, see gvr_get_viewer_type().
|
GetViewerVendor() const
|
const char *
For more information, see gvr_get_viewer_vendor().
|
GetWindowBounds() const
|
For more information, see gvr_get_window_bounds().
|
RefreshViewerProfile()
|
void
For more information, see gvr_refresh_viewer_profile().
|
SetDefaultViewerProfile(const char *viewer_profile_uri)
|
bool
For more information, see gvr_set_default_viewer_profile().
|
Wrapper manipulation |
|
---|---|
GetContext()
|
Deprecated. Use cobj() instead. |
GetContext() const
|
const gvr_context *
|
GvrApi(gvr_context *context, bool owned)
|
|
WrapNonOwned(gvr_context *context)
|
std::unique_ptr< GvrApi >
Instantiates a GvrApi instance that wraps a non-owned gvr_context.
|
cobj()
|
Returns the wrapped C object. Does not affect ownership.
|
cobj() const
|
const gvr_context *
|
release()
|
Returns the wrapped C object and transfers its ownership to the caller.
|
Public static functions |
|
---|---|
Create(JNIEnv *env, jobject app_context, jobject class_loader)
|
std::unique_ptr< GvrApi >
Instantiates and returns a GvrApi instance that owns a gvr_context.
|
Public functions |
|
---|---|
operator=(const GvrApi &)=delete
|
void
|
Error handling
GetCurrentProperties
Properties GetCurrentProperties()
For more information, see gvr_get_current_properties().
GetErrorString
const char * GetErrorString( Error error_code )
For more information, see gvr_get_error_string().
Rendering
BindDefaultFramebuffer
void BindDefaultFramebuffer()
For more information, see gvr_bind_default_framebuffer().
CreateBufferViewport
BufferViewport CreateBufferViewport() const
Constructs a C++ wrapper for a gvr_buffer_viewport object.
For more information, see gvr_buffer_viewport_create().
Details | |
---|---|
Returns |
A new BufferViewport instance with memory allocated for an underlying gvr_buffer_viewport.
|
CreateEmptyBufferViewportList
BufferViewportList CreateEmptyBufferViewportList() const
Constructs a C++ wrapper for a gvr_buffer_viewport_list object.
For more information, see gvr_buffer_viewport_list_create().
Details | |
---|---|
Returns |
A new, empty BufferViewportList instance. Note: The validity of the returned object is closely tied to the lifetime of the member gvr_context. The caller is responsible for ensuring correct usage accordingly.
|
CreateSwapChain
SwapChain CreateSwapChain( const std::vector< BufferSpec > & specs )
For more information, see gvr_swap_chain_create().
DistortToScreen
void DistortToScreen( int32_t texture_id, const BufferViewportList & viewport_list, const Mat4f & rendered_head_pose_in_start_space_matrix, const ClockTimePoint & texture_presentation_time )
For more information, see gvr_distort_to_screen().
GetAsyncReprojectionEnabled
bool GetAsyncReprojectionEnabled() const
For more information, see gvr_get_async_reprojection_enabled().
GetMaximumEffectiveRenderTargetSize
Sizei GetMaximumEffectiveRenderTargetSize() const
For more information, see gvr_get_maximum_effective_render_target_size().
GetScreenTargetSize
Sizei GetScreenTargetSize() const
For more information, see gvr_get_screen_target_size().
IsFeatureSupported
bool IsFeatureSupported( int32_t feature ) const
For more information, see gvr_is_feature_supported().
RequestFeatures
void RequestFeatures( const int32_t *required_features, int32_t required_count, const int32_t *optional_features, int32_t optional_count, void *on_complete_activity ) const
For more information, see gvr_request_features().
SetSurfaceSize
void SetSurfaceSize( Sizei surface_size_pixels )
For more information, see gvr_set_surface_size().
Head tracking
ApplyNeckModel
Mat4f ApplyNeckModel( const Mat4f & head_space_from_start_space_rotation, float factor ) const
For more information, see gvr_apply_neck_model().
GetHeadSpaceFromStartSpaceRotation
Mat4f GetHeadSpaceFromStartSpaceRotation( const ClockTimePoint & time_point ) const
For more information see gvr_get_head_space_from_start_space_rotation.
GetHeadSpaceFromStartSpaceTransform
Mat4f GetHeadSpaceFromStartSpaceTransform( const ClockTimePoint & time_point ) const
For more information see gvr_get_head_space_from_start_space_transform.
GetTimePointNow
ClockTimePoint GetTimePointNow()
For more information, see gvr_get_time_point_now().
RecenterTracking
void RecenterTracking()
Viewer parameters
ComputeDistortedPoint
std::array< Vec2f, 3 > ComputeDistortedPoint( Eye eye, const Vec2f & uv_in )
For more information, see gvr_compute_distorted_point().
GetEyeFromHeadMatrix
Mat4f GetEyeFromHeadMatrix( Eye eye ) const
For more information, see gvr_get_eye_from_head_matrix().
GetViewerModel
const char * GetViewerModel() const
For more information, see gvr_get_viewer_model().
GetViewerVendor
const char * GetViewerVendor() const
For more information, see gvr_get_viewer_vendor().
RefreshViewerProfile
void RefreshViewerProfile()
For more information, see gvr_refresh_viewer_profile().
SetDefaultViewerProfile
bool SetDefaultViewerProfile( const char *viewer_profile_uri )
For more information, see gvr_set_default_viewer_profile().
Wrapper manipulation
GvrApi
GvrApi( gvr_context *context, bool owned )
WrapNonOwned
std::unique_ptr< GvrApi > WrapNonOwned( gvr_context *context )
Instantiates a GvrApi instance that wraps a non-owned gvr_context.
Ownership of the provided context
remains with the caller, and they are responsible for ensuring proper disposal of the context.
Details | |||
---|---|---|---|
Parameters |
|
||
Returns |
unique_ptr to the created GvrApi instance. Never null.
|
cobj
const gvr_context * cobj() const
release
gvr_context * release()
Returns the wrapped C object and transfers its ownership to the caller.
The wrapper becomes invalid and should not be used.
Public static functions
Create
std::unique_ptr< GvrApi > Create( JNIEnv *env, jobject app_context, jobject class_loader )
Instantiates and returns a GvrApi instance that owns a gvr_context.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameters |
|
||||||
Returns |
unique_ptr to the created GvrApi instance, nullptr on failure.
|
Public functions
GvrApi
GvrApi( const GvrApi & )=delete
operator=
void operator=( const GvrApi & )=delete
~GvrApi
~GvrApi()