There are several development paths you can take through our documentation. The first step is finding the technology that’s right for you. If you already have one in mind, go ahead and jump right to its respective tab below. If you’re on the fence or just starting out, take a look through each one and understand what they offer, the available platforms and tools, and start creating!
[!IMPORTANT] Take a look at our porting guides overview if you have existing projects that you want to bring over to HoloLens 2 or immmersive VR headsets like the Reverb G2. We have guides for projects that are using HTK, MRTK v1, SteamVR or were developed for immersive headsets such as the Oculus Rift or HTC Vive.
Unity is one of the leading real-time development platforms on the market, with underlying runtime code written in C++ and all development scripting is done in C#. Whether you’re looking to build games, movies and animation cinematics, or even render architectural or engineering concepts in a virtual world, Unity has the infrastructure to support you.
[!Note] Please make sure to check out known issues in certain Unity versions before choosing a Unity version.
Unreal Engine 4 is a powerful, open source creation engine with full support for mixed reality in both C++ and Blueprints. As of Unreal Engine 4.25, HoloLens support is full-featured and production-ready. With capabilities such as the flexible Blueprints Visual Scripting system, designers can virtually use the full range of concepts and tools generally only available to programmers. Creators across industries can leverage the freedom and control to deliver cutting-edge content, interactive experiences, and immersive virtual worlds.
Native developers with experience writing their own 3D renderers can build a custom engine using OpenXR. OpenXR is an open royalty-free API standard from Khronos that provides engines native access to a wide range of devices from vendors across the mixed reality spectrum. You can develop using OpenXR on a HoloLens 2 or Windows Mixed Reality immersive headset on the desktop.
Web developers creating compelling cross-browser AR/VR web experiences can use WebXR.
Logistics | Unity | Unreal | JavaScript | Custom engine (using OpenXR) |
---|---|---|---|---|
Language | C# | C++ | JavaScript | C/C++ |
Pricing | Unity pricing | Unreal pricing | Free | Free |
Device features | Unity | Unreal | JavaScript | Custom engine (using OpenXR) |
---|---|---|---|---|
Device/display tracking | ✔️ | ✔️ | ✔️ | ✔️ |
Hand input | ✔️ | ✔️ | ✔️ | ✔️ |
Eye input | ✔️ | ✔️ | ❌ | ✔️ |
Voice input | ✔️ | ✔️ | ✔️ | ✔️ |
Motion controllers | ✔️ | ✔️ | ✔️ | ✔️ |
Plane/mesh hit testing | ✔️ | ✔️ | ✔️ | ✔️ |
Scene understanding | ✔️ | ✔️ | ❌ | ✔️ |
Spatial sound | ✔️ | ✔️ | ✔️ | ✔️ |
QR code detection | ✔️ | ✔️ | ❌ | ✔️ |
Hardware | Unity | Unreal | JavaScript | Custom engine (using OpenXR) |
---|---|---|---|---|
HoloLens 2 | ✔️ | ✔️ | ✔️ | ✔️ |
HoloLens (1st gen) | ✔️ | ✔️ | ❌ | WinRT (Legacy) only |
Windows Mixed Reality headsets | ✔️ | ✔️ | ✔️ | ✔️ |
SteamVR headsets | ✔️ | ✔️ | ✔️ | ✔️ |
Oculus Quest/Rift | ✔️ | ✔️ | ✔️ | ✔️ |
Mobile (ARCore/ARKit) | ✔️ | ✔️ | ✔️ | ❌ |
Tools | Unity | Unreal | JavaScript | Custom engine (using OpenXR) |
||
---|---|---|---|---|---|---|
Mixed Reality Toolkit | ✔️ | ✔️ | ❌ | ❌ | ||
World Locking Tools | ✔️ | ❌ | ❌ | ❌ | ||
<!– | Mesh | ❌ | ❌ | ❌ | ❌ | –> |
Cloud services | Unity | Unreal | JavaScript | Custom engine (using OpenXR) |
---|---|---|---|---|
Azure Spatial Anchors | ✔️ | ✔️ | ❌ | ✔️ |
Azure Object Anchors | ✔️ | ❌ | ❌ | ✔️ |
Azure Remote Rendering | ✔️ * | ❌ | ❌ | ✔️ * |
[!NOTE]
- Azure Remote Rendering is currently supported in apps using the legacy WinRT APIs (Windows XR plugin in Unity). ARR support for OpenXR apps is coming soon.