Input and Haptics
OpenXR API Overview
Instances
GetInstanceProcAddr
EnumerateInstanceExtensionProperties
CreateInstance
DestroyInstance
GetInstanceProperties
Sessions
CreateSession
BeginSession
EndSession
DestroySession
OpenXRTM
is a cross-platform API that enables a continuum of real-and-virtual
combined environments generated by computers through human-machine
interaction and is inclusive of the technologies associated with virtual reality,
augmented reality, and mixed reality.
More information and specifications at khronos.org/openxr
API Layers
Various layers can be
enabled to enhance
functionality such as a
validation layer, or tracing
layer.
Input and Haptics
Applications define actions,
the runtime binds actions
to input devices. Action
sets are application-defined
collections of actions.
Instances
Application’s
representation of the
OpenXR runtime.
The CreateInstance
function calls the loader to
determine which installed
OpenXR runtime to
connect to.
View Configurations
Configuration for rendering,
such as MONO or STEREO.
The application queries
the runtime for supported
configurations, then selects
the configuration to use.
Systems
A collection of related devices
in the runtime working
together to enable XR
experiences.
May include VR/AR displays,
input form factors, and
trackable objects.
Swapchains
The OpenXR runtime allows
applications to create multiple
swapchains, into which 2D or
3D images are organized to
present to the user.
Render Loop
A session is created and the
application’s XR rendering
loop begins.
Sessions
An active interaction
between the application
and the runtime.
An application indicates
it wants to render by
beginning a session.
Spaces
Frame of reference, how
to track real and virtual
objects and their relative
motion.
OpenXR defines 3
reference spaces, VIEW,
LOCAL, and STAGE.
Events
Events are messages sent
from the runtime into a
queue from which the
application will read one
at a time.
Helper Functions
Functions to help with
conversions of strings.
Events
PollEvent
Systems
GetSystem
GetSystemProperties
EnumerateEnvironmentBlendModes
API Layers
EnumerateApiLayerProperties
View Configurations
EnumerateViewConfigurations
GetViewConfigurationProperties
EnumerateViewConfigurationViews
LocateViews
Helper Functions
ResultToString StructureTypeToString StringToPath PathToString
Create action and action spaces
xrCreateAction
name = “teleport”
type = XR_INPUT_ACTION_TYPE_BOOLEAN
name = “teleport_ray”
type = XR_INPUT_ACTION_TYPE_POSE
xrCreateActionSpace
action = “teleport_ray”
Render Loop
WaitFrame
BeginFrame
EndFrame
Input and Haptics
CreateAction
DestroyAction
CreateActionSet
DestroyActionSet
GetActionState*
SyncActionData
GetBoundSourceForAction
GetInputSourceLocalizedName
SetInteractionProfileSuggestedBindings
GetCurrentInteractionProfile
ApplyHapticFeedback
StopHapticFeedback
Swapchains
EnumerateSwapchainFormats
CreateSwapchain
DestroySwapchain
EnumerateSwapchainImages
AcquireSwapchainImage
WaitSwapchainImage
ReleaseSwapchainImage
Spaces
EnumerateReferenceSpaces
CreateReferenceSpace
CreateActionSpace
LocateSpace
GetReferenceSpaceBoundsRect
DestroySpace
OpenXR separates the application actions
such as Move, Jump, and Teleport from
the input device: Trigger, Thumbstick, and
Button. This simplifies support for different
or future input devices and maximizes user
accessibility.
Interaction profiles identify a collection of buttons
and other input sources in a physical arrangement
to allow applications and runtimes to coordinate
action to input mapping. Interaction profiles
for well known XR systems are included in the
specification.
Set up interaction profile bindings
xrSetInteractionProfileSuggestedBindings
/interaction_profiles/oculus/touch_controller
	 Action “teleport”
		 -> /user/hand/right/input/a/click
	 Action “teleport_ray”
		 -> /user/hand/right/input/pointer/pose
/interaction_profiles/htc/vive_controller
	 Action “teleport”
		 -> /user/hand/right/input/trackpad/click
	 Action “teleport_ray”
		 -> /user/hand/right/input/pointer/pose Get action states
xrGetActionStateBoolean (“teleport_ray”)
if (state.currentState) // button is pressed
{
xrLocateSpace (teleport_ray_space,
	 stage_reference_space);
}
Learn more about OpenXR
OpenXR is maintained by the Khronos® Group, a worldwide consortium of
organizations that creates and maintains key standards used across many
industries. Visit Khronos online for resources to help you master OpenXR:
OpenXR Resource Page: khronos.org/openxr
Forums: forums.khronos.org
Slack: https://khr.io/slack
Videos & Presentations: khr.io/library
Khronos Events: khronos.org/events
Khronos Blog: khronos.org/blog
Reference Guides: khr.io/refguides
Khronos Books: khronos.org/developers/books
Khronos Merchandise: khronos.org/store
© 2019 The Khronos® Group Inc.
OpenXR Application Lifecycle
A high level overview of a typical OpenXR application including the order of function calls, creation of objects, session state changes, and the rendering loop.
Refer to the OpenXR specification at khronos.org/openxr for details.
www.khronos.org/openxr
Session States
and
Frame Loop
Applica�on
Started
Decide API and
Extensions usages
Instance
Created
Instance
Destroyed
Applica�on
Completed
Session
System
Unavailable
System
Available
Session
Created
Session
Destroyed
xrDestroyInstance
xrCreateInstance
xrGetInstanceProperties
xrEnumerateApiLayerProperties
xrEnumerateExtensionProperties
xrCreateSession
xrDestroySession
xrDestroySpace
xrDestroyAction
xrDestroyActionSet
xrDestroySwapchain
xrGetSystem
XR_ERROR
_FORM_FACTOR_UNAVAILABLE
xrPollEvent
xrGetSystemProperties
xrEnumerateViewConfigurations
xrGetViewConfigurationProperties
xrEnumerateViewConfigurationViews
xrEnumerateEnvironmentBlendModes
XR_SESSION_STATE
RUNNING or VISIBLE or FOCUSED
Execute Graphics Work
xrReleaseSwapchainImage
xrAcquireSwapchainImage
xrWaitSwapchainImage
xrLocateSpace
xrLocateViews
xrSyncActionData
xrGetActionState*
xrApplyHapticFeedback
xrStopHapticFeedback
xrGetCurrentInteractionProfile
XR_SESSION_STATE
READY
XR_SESSION_STATE
STOPPING
XR_SESSION_STATE
EXITING
XR_SESSION_STATE
LOSS_PENDING
not focused
XR_SESSION_STATE
IDLE
xrWaitFrame
xrBeginFrame
not visible
xrEnumerateReferenceSpaces
xrCreateReferenceSpace
xrCreateActionSpace
xrGetReferenceSpaceBoundsRect
xrEnumerateSwapchainFormats
xrCreateSwapchain
xrEnumerateSwapchainImages
xrCreateActionSet
xrCreateAction
xrSetInteractionProfileSuggestedBindings
xrEndFrame
xrBeginSession
xrEndSession
Handle Ac�ons

More Related Content

PDF
OpenXR 1.0 Reference Guide
PDF
OpenXR – State of the Union - Khronos GDC 2019
PDF
Project meeting: Android Graphics Architecture Overview
PPTX
Angular tutorial
PDF
React js t7 - forms-events
PDF
インタフェースの実装パターン
PDF
Mobile Browser Internal (Blink Rendering Engine)
PDF
【Unity】Scriptable object 入門と活用例
OpenXR 1.0 Reference Guide
OpenXR – State of the Union - Khronos GDC 2019
Project meeting: Android Graphics Architecture Overview
Angular tutorial
React js t7 - forms-events
インタフェースの実装パターン
Mobile Browser Internal (Blink Rendering Engine)
【Unity】Scriptable object 入門と活用例

What's hot (20)

PPTX
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
PDF
Use Node.js to create a REST API
PDF
中・大規模でLaravelを導入するTips
PPTX
Flutter
PDF
Introduction to React JS
PDF
Spring aop
PDF
Unityネイティブプラグインの勧め
PPTX
Angular 6 Form Validation with Material
PPTX
AR-Frame x AR.js入門
PPTX
Selenium WebDriver
PPTX
Introduction to Apache Cordova (Phonegap)
PPTX
UE4を用いたTPS制作事例 EDF:IR パラメータ管理実装実例
PDF
【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術
PPTX
Api design part 1
PPTX
WkWebViewのキャッシュについて調べた
PDF
Introduction to Protractor
PPTX
HoloLensで外部定義ファイルを使う
PDF
猫でも分かる UE4の新しいサンプル「Action RPG」について
PPTX
What is Swagger?
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Use Node.js to create a REST API
中・大規模でLaravelを導入するTips
Flutter
Introduction to React JS
Spring aop
Unityネイティブプラグインの勧め
Angular 6 Form Validation with Material
AR-Frame x AR.js入門
Selenium WebDriver
Introduction to Apache Cordova (Phonegap)
UE4を用いたTPS制作事例 EDF:IR パラメータ管理実装実例
【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術
Api design part 1
WkWebViewのキャッシュについて調べた
Introduction to Protractor
HoloLensで外部定義ファイルを使う
猫でも分かる UE4の新しいサンプル「Action RPG」について
What is Swagger?
Ad

Similar to OpenXR 0.90 Overview Guide (20)

PDF
Intro to JavaScript
PPTX
Developing a Real-time Engine with Akka, Cassandra, and Spray
PDF
Java rmi
KEY
Android workshop
PPTX
apidays LIVE Australia 2020 - Building distributed systems on the shoulders o...
PDF
Ajax tutorial
PDF
Gatekeeper Exposed
PDF
Escape from Mars
PDF
Azure Durable Functions (2019-03-30)
PPT
Unit v
PDF
Functional, Type-safe, Testable Microservices with ZIO and gRPC
PPTX
Ft10 de smet
PDF
Maxim Salnikov - Service Worker: taking the best from the past experience for...
PPTX
Making Swift even safer
PDF
Foomo / Zugspitze Presentation
PPT
Pascarello_Investigating JavaScript and Ajax Security
PDF
Building Massively Scalable application with Akka 2.0
PDF
Azure Durable Functions (2018-06-13)
PDF
Xamarin Workshop Noob to Master – Week 5
PDF
droidQuery: The Android port of jQuery
Intro to JavaScript
Developing a Real-time Engine with Akka, Cassandra, and Spray
Java rmi
Android workshop
apidays LIVE Australia 2020 - Building distributed systems on the shoulders o...
Ajax tutorial
Gatekeeper Exposed
Escape from Mars
Azure Durable Functions (2019-03-30)
Unit v
Functional, Type-safe, Testable Microservices with ZIO and gRPC
Ft10 de smet
Maxim Salnikov - Service Worker: taking the best from the past experience for...
Making Swift even safer
Foomo / Zugspitze Presentation
Pascarello_Investigating JavaScript and Ajax Security
Building Massively Scalable application with Akka 2.0
Azure Durable Functions (2018-06-13)
Xamarin Workshop Noob to Master – Week 5
droidQuery: The Android port of jQuery
Ad

More from The Khronos Group Inc. (20)

PDF
Vulkan Ray Tracing Update JP Translation
PDF
Vulkan ML JP Translation
PDF
OpenCL Overview JP Translation
PDF
glTF overview JP Translation
PDF
Khronos Overview JP Translation
PPTX
Vulkan Update Japan Virtual Open House Feb 2021
PPTX
Vulkan Ray Tracing Update Japan Virtual Open House Feb 2021
PPTX
OpenCL Overview Japan Virtual Open House Feb 2021
PPTX
Vulkan ML Japan Virtual Open House Feb 2021
PPTX
glTF Overview Japan Virtual Open House Feb 2021
PPTX
Khronos Overview Japan Virtual Open House Feb 2021
PDF
SYCL 2020 Specification
PDF
OpenCL 3.0 Reference Guide
PDF
OpenVX 1.3 Reference Guide
PDF
Vulkan 1.1 Reference Guide
PDF
SYCL 1.2.1 Reference Card
PDF
OpenCL 2.2 Reference Guide
PDF
OpenGL 4.6 Reference Guide
PDF
glTF 2.0 Reference Guide
PDF
OpenVX 1.2 Reference Guide
Vulkan Ray Tracing Update JP Translation
Vulkan ML JP Translation
OpenCL Overview JP Translation
glTF overview JP Translation
Khronos Overview JP Translation
Vulkan Update Japan Virtual Open House Feb 2021
Vulkan Ray Tracing Update Japan Virtual Open House Feb 2021
OpenCL Overview Japan Virtual Open House Feb 2021
Vulkan ML Japan Virtual Open House Feb 2021
glTF Overview Japan Virtual Open House Feb 2021
Khronos Overview Japan Virtual Open House Feb 2021
SYCL 2020 Specification
OpenCL 3.0 Reference Guide
OpenVX 1.3 Reference Guide
Vulkan 1.1 Reference Guide
SYCL 1.2.1 Reference Card
OpenCL 2.2 Reference Guide
OpenGL 4.6 Reference Guide
glTF 2.0 Reference Guide
OpenVX 1.2 Reference Guide

Recently uploaded (20)

PDF
Co-training pseudo-labeling for text classification with support vector machi...
PDF
The AI Revolution in Customer Service - 2025
PDF
A hybrid framework for wild animal classification using fine-tuned DenseNet12...
PDF
AI.gov: A Trojan Horse in the Age of Artificial Intelligence
PDF
Transform-Quality-Engineering-with-AI-A-60-Day-Blueprint-for-Digital-Success.pdf
PDF
The-Future-of-Automotive-Quality-is-Here-AI-Driven-Engineering.pdf
PDF
IT-ITes Industry bjjbnkmkhkhknbmhkhmjhjkhj
PDF
Data Virtualization in Action: Scaling APIs and Apps with FME
PDF
Rapid Prototyping: A lecture on prototyping techniques for interface design
PPTX
Report in SIP_Distance_Learning_Technology_Impact.pptx
PDF
Altius execution marketplace concept.pdf
PDF
Launch a Bumble-Style App with AI Features in 2025.pdf
PDF
Transform-Your-Factory-with-AI-Driven-Quality-Engineering.pdf
PDF
Lung cancer patients survival prediction using outlier detection and optimize...
PDF
EIS-Webinar-Regulated-Industries-2025-08.pdf
PPTX
AI-driven Assurance Across Your End-to-end Network With ThousandEyes
PDF
SaaS reusability assessment using machine learning techniques
PDF
Connector Corner: Transform Unstructured Documents with Agentic Automation
PDF
5-Ways-AI-is-Revolutionizing-Telecom-Quality-Engineering.pdf
PDF
Advancing precision in air quality forecasting through machine learning integ...
Co-training pseudo-labeling for text classification with support vector machi...
The AI Revolution in Customer Service - 2025
A hybrid framework for wild animal classification using fine-tuned DenseNet12...
AI.gov: A Trojan Horse in the Age of Artificial Intelligence
Transform-Quality-Engineering-with-AI-A-60-Day-Blueprint-for-Digital-Success.pdf
The-Future-of-Automotive-Quality-is-Here-AI-Driven-Engineering.pdf
IT-ITes Industry bjjbnkmkhkhknbmhkhmjhjkhj
Data Virtualization in Action: Scaling APIs and Apps with FME
Rapid Prototyping: A lecture on prototyping techniques for interface design
Report in SIP_Distance_Learning_Technology_Impact.pptx
Altius execution marketplace concept.pdf
Launch a Bumble-Style App with AI Features in 2025.pdf
Transform-Your-Factory-with-AI-Driven-Quality-Engineering.pdf
Lung cancer patients survival prediction using outlier detection and optimize...
EIS-Webinar-Regulated-Industries-2025-08.pdf
AI-driven Assurance Across Your End-to-end Network With ThousandEyes
SaaS reusability assessment using machine learning techniques
Connector Corner: Transform Unstructured Documents with Agentic Automation
5-Ways-AI-is-Revolutionizing-Telecom-Quality-Engineering.pdf
Advancing precision in air quality forecasting through machine learning integ...

OpenXR 0.90 Overview Guide

  • 1. Input and Haptics OpenXR API Overview Instances GetInstanceProcAddr EnumerateInstanceExtensionProperties CreateInstance DestroyInstance GetInstanceProperties Sessions CreateSession BeginSession EndSession DestroySession OpenXRTM is a cross-platform API that enables a continuum of real-and-virtual combined environments generated by computers through human-machine interaction and is inclusive of the technologies associated with virtual reality, augmented reality, and mixed reality. More information and specifications at khronos.org/openxr API Layers Various layers can be enabled to enhance functionality such as a validation layer, or tracing layer. Input and Haptics Applications define actions, the runtime binds actions to input devices. Action sets are application-defined collections of actions. Instances Application’s representation of the OpenXR runtime. The CreateInstance function calls the loader to determine which installed OpenXR runtime to connect to. View Configurations Configuration for rendering, such as MONO or STEREO. The application queries the runtime for supported configurations, then selects the configuration to use. Systems A collection of related devices in the runtime working together to enable XR experiences. May include VR/AR displays, input form factors, and trackable objects. Swapchains The OpenXR runtime allows applications to create multiple swapchains, into which 2D or 3D images are organized to present to the user. Render Loop A session is created and the application’s XR rendering loop begins. Sessions An active interaction between the application and the runtime. An application indicates it wants to render by beginning a session. Spaces Frame of reference, how to track real and virtual objects and their relative motion. OpenXR defines 3 reference spaces, VIEW, LOCAL, and STAGE. Events Events are messages sent from the runtime into a queue from which the application will read one at a time. Helper Functions Functions to help with conversions of strings. Events PollEvent Systems GetSystem GetSystemProperties EnumerateEnvironmentBlendModes API Layers EnumerateApiLayerProperties View Configurations EnumerateViewConfigurations GetViewConfigurationProperties EnumerateViewConfigurationViews LocateViews Helper Functions ResultToString StructureTypeToString StringToPath PathToString Create action and action spaces xrCreateAction name = “teleport” type = XR_INPUT_ACTION_TYPE_BOOLEAN name = “teleport_ray” type = XR_INPUT_ACTION_TYPE_POSE xrCreateActionSpace action = “teleport_ray” Render Loop WaitFrame BeginFrame EndFrame Input and Haptics CreateAction DestroyAction CreateActionSet DestroyActionSet GetActionState* SyncActionData GetBoundSourceForAction GetInputSourceLocalizedName SetInteractionProfileSuggestedBindings GetCurrentInteractionProfile ApplyHapticFeedback StopHapticFeedback Swapchains EnumerateSwapchainFormats CreateSwapchain DestroySwapchain EnumerateSwapchainImages AcquireSwapchainImage WaitSwapchainImage ReleaseSwapchainImage Spaces EnumerateReferenceSpaces CreateReferenceSpace CreateActionSpace LocateSpace GetReferenceSpaceBoundsRect DestroySpace OpenXR separates the application actions such as Move, Jump, and Teleport from the input device: Trigger, Thumbstick, and Button. This simplifies support for different or future input devices and maximizes user accessibility. Interaction profiles identify a collection of buttons and other input sources in a physical arrangement to allow applications and runtimes to coordinate action to input mapping. Interaction profiles for well known XR systems are included in the specification. Set up interaction profile bindings xrSetInteractionProfileSuggestedBindings /interaction_profiles/oculus/touch_controller Action “teleport” -> /user/hand/right/input/a/click Action “teleport_ray” -> /user/hand/right/input/pointer/pose /interaction_profiles/htc/vive_controller Action “teleport” -> /user/hand/right/input/trackpad/click Action “teleport_ray” -> /user/hand/right/input/pointer/pose Get action states xrGetActionStateBoolean (“teleport_ray”) if (state.currentState) // button is pressed { xrLocateSpace (teleport_ray_space, stage_reference_space); }
  • 2. Learn more about OpenXR OpenXR is maintained by the Khronos® Group, a worldwide consortium of organizations that creates and maintains key standards used across many industries. Visit Khronos online for resources to help you master OpenXR: OpenXR Resource Page: khronos.org/openxr Forums: forums.khronos.org Slack: https://khr.io/slack Videos & Presentations: khr.io/library Khronos Events: khronos.org/events Khronos Blog: khronos.org/blog Reference Guides: khr.io/refguides Khronos Books: khronos.org/developers/books Khronos Merchandise: khronos.org/store © 2019 The Khronos® Group Inc. OpenXR Application Lifecycle A high level overview of a typical OpenXR application including the order of function calls, creation of objects, session state changes, and the rendering loop. Refer to the OpenXR specification at khronos.org/openxr for details. www.khronos.org/openxr Session States and Frame Loop Applica�on Started Decide API and Extensions usages Instance Created Instance Destroyed Applica�on Completed Session System Unavailable System Available Session Created Session Destroyed xrDestroyInstance xrCreateInstance xrGetInstanceProperties xrEnumerateApiLayerProperties xrEnumerateExtensionProperties xrCreateSession xrDestroySession xrDestroySpace xrDestroyAction xrDestroyActionSet xrDestroySwapchain xrGetSystem XR_ERROR _FORM_FACTOR_UNAVAILABLE xrPollEvent xrGetSystemProperties xrEnumerateViewConfigurations xrGetViewConfigurationProperties xrEnumerateViewConfigurationViews xrEnumerateEnvironmentBlendModes XR_SESSION_STATE RUNNING or VISIBLE or FOCUSED Execute Graphics Work xrReleaseSwapchainImage xrAcquireSwapchainImage xrWaitSwapchainImage xrLocateSpace xrLocateViews xrSyncActionData xrGetActionState* xrApplyHapticFeedback xrStopHapticFeedback xrGetCurrentInteractionProfile XR_SESSION_STATE READY XR_SESSION_STATE STOPPING XR_SESSION_STATE EXITING XR_SESSION_STATE LOSS_PENDING not focused XR_SESSION_STATE IDLE xrWaitFrame xrBeginFrame not visible xrEnumerateReferenceSpaces xrCreateReferenceSpace xrCreateActionSpace xrGetReferenceSpaceBoundsRect xrEnumerateSwapchainFormats xrCreateSwapchain xrEnumerateSwapchainImages xrCreateActionSet xrCreateAction xrSetInteractionProfileSuggestedBindings xrEndFrame xrBeginSession xrEndSession Handle Ac�ons