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)
       | 
      
        bool
        For more information, see gvr_is_feature_supported().  
       | 
    
        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()
       | 
      
        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 )
For more information, see gvr_is_feature_supported().
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()
Public functions
GvrApi
GvrApi( const GvrApi & )=delete
operator=
void operator=( const GvrApi & )=delete
~GvrApi
~GvrApi()