Developer

VITURE XR Glasses SDK

VITURE Glasses SDK is the official C SDK for integrating Viture smart glasses into your application. It provides USB device management, head tracking (IMU / 6DoF VIO), display control, and pass-through camera streaming — all through a clean C API that works on Linux, macOS, Windows, and Android.


Supported Hardware

  Product Name            Tracking   Camera
  ---------------------   --------   ---------------------------
  Viture One              3DOF       None
  Viture Lite             3DOF       None
  Viture Pro              3DOF       None
  Viture Pro 2            3DOF       None
  Luma                    3DOF       None
  Luma Pro                3DOF       Pass-through (UVC)
  Luma Cyber              3DOF       Pass-through (UVC)
  Luma Ultra              3/6DOF     Pass-through (UVC) + Stereo (VIO)
  Beast                   3DOF*      Pass-through (UVC)

All Viture glasses share USB Vendor ID 0x35CA.

*Beast supports native 3DOF head tracking when in native mode.


Supported Platforms

  Platform          Architecture
  ----------------  --------------------------------------
  Linux             x86_64, aarch64
  macOS             aarch64
  Windows           x86_64
  Android           armeabi-v7a, arm64-v8a
  Browser           WebAssembly (Chrome / Chromium only)

The browser SDK is distributed as a TypeScript API bundle over a WebAssembly build of the core, and reaches the glasses through WebHID. Luma Ultra is not supported in the browser.


Documentation Guide

If you are new to the SDK, read in this order:

  1. Core Concepts                       Handles, lifecycle, device families
  2. Quick Start — Desktop (C++)         Minimal working example
  3. Head Tracking                       Reading head orientation (IMU + 6DoF pose)
  4. Device Control                      Brightness, volume, display mode, film tint
  5. Camera Streaming                    Pass-through camera (UVC)
  6. Android Integration Guide           Android-specific integration
  7. SDK Usage Reporting (Stat Reporter) Optional usage reporting (gain-sharing)
  8. Native-DOF Devices                  Devices with on-device tracking (Beast)
  9. API Reference                       Complete function reference

Five-Minute Overview

The entire SDK lifecycle in one diagram:

  Application
      |
      |-- [1] Enumerate USB devices, find Viture PID
      |
      |-- [2] xr_device_provider_create(pid)  -------> handle
      |
      |-- [3] xr_device_provider_initialize(handle, NULL, NULL)
      |
      |-- [4] xr_device_provider_start(handle)
      |
      |-- [5] Register callbacks or poll pose
      |          |
      |          |-- Gen1/Gen2: register_imu_pose_callback + open_imu
      |          |-- Carina:    get_gl_pose_carina (poll in a loop)
      |
      |-- [6] Use device control functions (brightness, volume, etc.)
      |
      |-- [7] xr_device_provider_stop(handle)
      |       xr_device_provider_shutdown(handle)
      |       xr_device_provider_destroy(handle)

Headers at a Glance

  Header                        Purpose
  ----------------------------  -----------------------------------------------
  viture_glasses_provider.h     Lifecycle: create/init/start/stop/shutdown/destroy
  viture_device.h               Gen1/Gen2 IMU callbacks and open/close IMU
  viture_device_carina.h        Luma Ultra pose polling, resets, DOF configuration
  viture_protocol_public.h      Device control: brightness, volume, display mode
  viture_camera_provider.h      Pass-through camera (UVC) streaming
  viture_stat_reporter.h        Optional SDK usage reporting (opt-in HTTPS)
  viture_result.h               Error code constants (VITURE_GLASSES_*)

SDK Version

The current version is defined in src/viture_version.h. Use GetVersionString() at runtime to retrieve the version string.