Develop

Hand tracking frequency hint OpenXR extension

Updated: Apr 24, 2026
This topic provides:
  • A usage guide for the Hand Tracking Frequency Hint OpenXR extension and links to related topics.

Overview

The XR_META_hand_tracking_frequency_hint extension allows applications to suggest a preferred hand tracking update frequency to the runtime. By default, the runtime uses a power-efficient tracking frequency suitable for general use cases. Applications that require more responsive hand tracking can request a higher frequency to reduce latency.
This extension depends on XR_EXT_hand_tracking.
Note: The frequency hint is advisory only. The runtime may ignore the hint based on system constraints, power management policies, or user preferences. Applications should not rely on the runtime honoring the frequency hint.

Extension: XR_META_hand_tracking_frequency_hint

The XR_META_hand_tracking_frequency_hint extension introduces one enum and one function.

XrHandTrackingFrequencyHintMETA

The XrHandTrackingFrequencyHintMETA enum defines the available frequency hints:
  • XR_HAND_TRACKING_FREQUENCY_HINT_DEFAULT_META (1): The application suggests the runtime use the default hand tracking frequency. This is typically the most power-efficient frequency that provides adequate tracking quality for general use cases.
  • XR_HAND_TRACKING_FREQUENCY_HINT_HIGH_META (2): The application suggests the runtime use a higher hand tracking frequency when possible. This may provide more responsive tracking, but at higher frame rates, the effectiveness of temporal smoothing algorithms is reduced, which can result in increased jitter and less visually smooth hand tracking.

xrSetHandTrackingFrequencyHintMETA

The xrSetHandTrackingFrequencyHintMETA function sets the hand tracking frequency hint for a session.
XrResult xrSetHandTrackingFrequencyHintMETA(
    XrSession                              session,
    const XrHandTrackingFrequencyHintMETA  frequencyHint);
Parameters:
  • session (XrSession): A session handle previously created with xrCreateSession.
  • frequencyHint (XrHandTrackingFrequencyHintMETA): The frequency hint that the application suggests to the runtime.
Return codes:
  • Success: XR_SUCCESS, XR_SESSION_LOSS_PENDING
  • Error: XR_ERROR_FUNCTION_UNSUPPORTED, XR_ERROR_HANDLE_INVALID, XR_ERROR_INSTANCE_LOST, XR_ERROR_RUNTIME_FAILURE, XR_ERROR_SESSION_LOST, XR_ERROR_VALIDATION_FAILURE
Behavior:
  • The hint applies to the entire session, not per hand tracker.
  • The hint persists until changed by another call to xrSetHandTrackingFrequencyHintMETA or until the session is destroyed.
  • Applications can call this function multiple times during a session to adjust the frequency hint based on changing requirements.

Example Usage

Include the extension header and enable the extension when creating the instance:
#include <meta_openxr_preview/meta_hand_tracking_frequency_hint.h>

std::vector<const char*> extensions;
extensions.push_back(XR_META_HAND_TRACKING_FREQUENCY_HINT_EXTENSION_NAME);
// ... add other extensions ...
Get the function pointer after instance creation:
PFN_xrSetHandTrackingFrequencyHintMETA xrSetHandTrackingFrequencyHintMETA = nullptr;
OXR(xrGetInstanceProcAddr(
    instance,
    "xrSetHandTrackingFrequencyHintMETA",
    (PFN_xrVoidFunction*)(&xrSetHandTrackingFrequencyHintMETA)));
Request a specific hand tracking frequency:
XrSession session; // previously initialized

// Request the default hand tracking frequency
OXR(xrSetHandTrackingFrequencyHintMETA(session, XR_HAND_TRACKING_FREQUENCY_HINT_DEFAULT_META));

// Or, request a high hand tracking frequency
OXR(xrSetHandTrackingFrequencyHintMETA(session, XR_HAND_TRACKING_FREQUENCY_HINT_HIGH_META));
Toggle the frequency hint at runtime based on application state:
XrHandTrackingFrequencyHintMETA hint = requestHighFrequency
    ? XR_HAND_TRACKING_FREQUENCY_HINT_HIGH_META
    : XR_HAND_TRACKING_FREQUENCY_HINT_DEFAULT_META;
xrSetHandTrackingFrequencyHintMETA(session, hint);
For hand tracking samples and additional OpenXR extensions, see the Meta OpenXR SDK.