DirectX development overview

Windows holographic apps are Windows 10 UWP applications that use the holographic rendering, gaze, gesture, and voice APIs. You can create holographic apps using a game engine, such as Unity, or you can use Windows Holographic APIs with DirectX 11. Please note that DirectX 12 is not currently supported. If you are leveraging the platform directly, you'll essentially be building your own middleware or framework. The Windows APIs support apps written in both C++ and C#. If you'd like to use C#, your application can leverage the SharpDX open source software library.

The HoloLens supports both Universal Windows Platform applications, which show up as a 2D application in the mixed world, and holographic apps use the HolographicSpace API to render an immersive view to the user.

The differences between UWP 2D app development and holographic app development are limited to the differences required to support holographic rendering and natural user input. The IFrameworkView is still required and remains largely the same, as do the WinRT APIs available to your app. However, you use a different subset of these APIs to take advantage of holographic features. For example, the swap chain is managed by the system for holographic apps, and you work with it rather than DXGI to present frames.

To begin developing holographic apps, create a new project using the templates in Visual Studio. Based on your language, Visual C++ or Visual C#, you will find the templates under Windows > Universal > Holographic. This is a great way to get the code you need to add holographic support to an existing app or engine. Code and concepts are presented in the template in a way that's familiar to any developer of real-time interactive software.

Getting started

The following topics discuss the base requirements of adding Windows Holographic support to DirectX-based middleware:

  • Creating a holographic DirectX project: The holographic app template coupled with the documentation will show you the differences between what you're used to, and the special requirements introduced by a device that's designed to function while resting on your head.
  • Getting a HolographicSpace: You'll first need to create a HolographicSpace, which will provide your app the sequence of HolographicFrame objects that represent each head position from which you'll render.
  • Rendering in DirectX: Since the HoloLens has two render targets, you'll likely need to make some changes to the way your application renders.
  • Coordinate systems in DirectX: The HoloLens learns and updates its understanding of the world as the user walks around, which leads to see new ways or apps to reason about coordinate systems, including use of spatial anchors.

Adding holographic capabilities and inputs

To enable the best possible experience for users of your holographic apps, you'll want to support the building blocks of holographic apps:

There are other key features that many holographic apps will want to use, which are also exposed to DirectX apps:

See also