Holografikus DirectX-projekt létrehozása

Megjegyzés

Ez a cikk az örökölt WinRT natív API-okkal kapcsolatos. Új natív alkalmazásprojektek esetén az OpenXR API használatát javasoljuk.

Egy alkalmazáshoz létrehozott holografikus HoloLens univerzális Windows platform- (UWP-) alkalmazás lesz. Ha asztali Windows Mixed Reality használ, létrehozhat egy UWP-alkalmazást vagy egy Win32-alkalmazást.

A DirectX 11 holografikus UWP-alkalmazássablon nagyon hasonló a DirectX 11 UWP-alkalmazássablonhoz. A sablon tartalmaz egy programhurkot, egy DeviceResources osztályt a Direct3D eszköz és a környezet kezeléséhez, valamint egy egyszerűsített tartalom renderelő osztályt. IFrameworkViewnézete is van, mint bármely más UWP-alkalmazásnak.

A vegyes valóság alkalmazás azonban rendelkezik néhány további képességgel, amelyek nem biztosítanak egy tipikus Direct3D UWP-alkalmazást. A Windows Mixed Reality alkalmazássablon a következőre képes:

  • A holografikus kamerákhoz társított Direct3D-eszközök erőforrásainak kezeléséhez.
  • Kamera-visszapufferek lekérése a rendszerből. Direct3D12 esetén hozzon létre holografikus háttérpuffer-erőforrásokat, és kezelje az erőforrások élettartamát.
  • Kezelje a tekintet bemenetét, és felismerje a kézmozdulatot.
  • Váltsa át a teljes képernyős sztereotikus renderelési módot.

Hogyan kezdhetek hozzá?

Először telepítse az eszközöket,a 2019-es Visual Studio letöltésével és a Windows Mixed Reality alkalmazássablonokkal. A vegyes valóságú alkalmazássablonok webes letöltésként Visual Studio érhetők el aVisual Studio piactéren, vagy úgy, hogy bővítményként telepítik őket az Visual Studio felhasználói felületén.

Most már készen áll a DirectX 11-es Windows Mixed Reality létrehozására! Vegye figyelembe, hogy a mintatartalom eltávolításához megjegyzésbe kell DRAW_SAMPLE_CONTENT apch.helőprocesszori irányelvében.

UWP-projekt létrehozása

Az eszközök telepítése után](.. /install-the-tools.md) létrehozhat egy holografikus DirectX UWP-projektet.

Új projekt létrehozása a 2019 Visual Studio ban:

  1. Indítsa el Visual Studio.
  2. A jobb Első lépések szakaszban válassza az Új projekt létrehozása lehetőséget.
  3. A Create a new project (Új projekt létrehozása) párbeszédpanel legördülő menüiben válassza a C++, Windows Mixed Reality, és UWP lehetőséget.
  4. Válassza a Holographic DirectX 11 App (Universal Windows) (C++/WinRT)lehetőséget. Képernyőkép a Holographic DirectX 11 C++/WinRT UWP-alkalmazás 2019-es Visual Studio sablonról
    Holographic DirectX 11 C++/WinRT UWP alkalmazásprojekt-sablon a 2019 Visual Studio ban

    Fontos

    Győződjön meg arról, hogy a projektsablon neve tartalmazza a "(C++/WinRT)" nevet. Ha nem, a holografikus projektsablonok egy régebbi verziója van telepítve. A legújabb projektsablonok lekért 2019-es Visual Studio telepítéséhez.

  5. Kattintson a Tovább gombra.
  6. Töltse ki a Project és a Hely szövegmezőt, majd válassza vagy koppintson a Létrehozás gombra. Létrejön a holografikus alkalmazásprojekt.
  7. A csak a 2. HoloLens célként való fejlesztéshez győződjön meg arról, hogy a Célverzió és a Minimális verzió Windows 10 1903-as verzióra van beállítva. Ha HoloLens (1. generációs) vagy asztali Windows Mixed Reality-headseteket is megcélzott, a Minimális verzió beállításnál használhatja a Windows 10, 1809-es verzió. Ehhez adaptív verzióellenőrzésre lesz szükség a kódban a 2. HoloLens funkcióinak használata esetén. Képernyőkép az 1903 Windows 10 verzió beállításának cél- és minimális verziójáról
    A Windows 10 1903-as verzió beállítása cél- és minimális verzióként

    Fontos

    Ha nem látja a Windows 10 1903-as verzióját, akkor nincs telepítve a legújabb Windows 10 SDK. Ha ezt a lehetőséget meg kell jelenni, telepítse az Windows 10 SDK 10.0.18362.0-s vagyújabb verzióját.

Új projekt létrehozása a 2017 Visual Studio ban:

  1. Indítsa el Visual Studio.
  2. A Fájl menüben mutasson az Új pontra, és Project helyi menüből válassza az Új lehetőséget. Megnyílik az Új Project párbeszédpanel.
  3. Bontsa ki a Telepítve csomópontot a bal oldalon, és bontsa ki a Visual C++ nyelvi csomópontot.
  4. Lépjen a Windows Holographic csomópontra, és válassza a Holographic DirectX 11 App (Universal Windows) (C++/WinRT)lehetőséget. Képernyőkép a Holographic DirectX 11 C++/WinRT UWP-alkalmazás 2017-es Visual Studio sablonról
    Holographic DirectX 11 C++/WinRT UWP app project template in Visual Studio 2017

    Fontos

    Győződjön meg arról, hogy a projektsablon neve tartalmazza a "(C++/WinRT)" nevet. Ha nem, a holografikus projektsablonok egy régebbi verziója van telepítve. A legújabb projektsablonok lekért 2017-es Visual Studio telepítéséhez.

  5. Töltse ki a Név és Hely szövegmezőt, majd válassza vagy koppintson az OK gombra. Létrejön a holografikus alkalmazásprojekt.
  6. A csak a 2. HoloLens célként való fejlesztéshez győződjön meg arról, hogy a Célverzió és a Minimális verzió Windows 10 1903-as verzióra van beállítva. Ha HoloLens (1. generációs) vagy asztali Windows Mixed Reality-headseteket is megcélzott, a Minimális verzió beállításnál használhatja a Windows 10, 1809-es verzió. Ehhez adaptív verzióellenőrzésre lesz szükség a kódban a 2. HoloLens funkcióinak használata esetén. Képernyőkép az 1903 Windows 10 verzió beállításának cél- és minimális verziójáról
    A Windows 10 1903-as verzió beállítása cél- és minimális verzióként

    Fontos

    Ha nem látja a Windows 10 1903-as verzióját, akkor nincs telepítve a legújabb Windows 10 SDK. Ha ezt a lehetőséget meg kell jelenni, telepítse az Windows 10 SDK 10.0.18362.0-s vagyújabb verzióját.

A sablon egy projektet hoz létre a C++/WinRT,a Windows Runtime API-k C++17 nyelvi leképezésének használatával, amely támogatja a szabványoknak megfelelő C++17-fordítókat. A projekt bemutatja, hogyan hozhat létre egy világ által zárolt kockát, amely 2 métert helyez el a felhasználótól. A felhasználó a vezérlő egyik gombjára koppintva vagy lenyomva a kockát a felhasználó tekintete által meghatározott másik helyre helyezze. Ezt a projektet módosíthatja vegyes valóságú alkalmazások létrehozásához.

A SharpDX-alapú Visual C# holografikus projektsablonnal is létrehozhat új projektet. Ha a holografikus C#-projekt nem az Windows Holographic alkalmazássablonból indul, akkor ki kell másolnia az ms.fxcompile.targets fájlt egy Windows Mixed Reality C#-sablonprojektből, és importálni kell azt a your.csproj fájlba a projekthez hozzáadt HLSL-fájlok fordítása érdekében. A Direct3D 12-sablon az alkalmazássablonok Windows Mixed Reality is elérhető a Visual Studio.

A Minta Visual Studio és hibakeresési használatával való üzembe helyezésével és hibakeresésével kapcsolatos információkért tekintse meg, hogyan építheti fel és helyezheti üzembe a mintát HoloLens-ben, a modern eszközzel csatlakoztatott pc-n vagy egy emulátoron.

Az alábbi utasítások további részében feltételezzük, hogy a C++ használatával építi fel az alkalmazást.

UWP-alkalmazás belépési pontja

A holografikus UWP-alkalmazás az AppView.cpp wWinMain függvényében indul el. A wWinMain függvény létrehozza az alkalmazás IFrameworkView nézetét, és elindítja vele a CoreApplication alkalmazást.

Az AppView.cpp-ben:

// The main function bootstraps into the IFrameworkView.
int __stdcall wWinMain(HINSTANCE, HINSTANCE, PWSTR, int)
{
    winrt::init_apartment();
    CoreApplication::Run(AppViewSource());
    return 0;
}

Ettől a ponttól az AppView osztály kezeli a Windows bemeneti eseményekkel, a CoreWindow-eseményekkel és -üzenetekkel stb. való kommunikációt. Emellett az alkalmazás által használt HolographicSpace-t is létrehozza.

Win32-projekt létrehozása

A Win32 holografikus projektek elkészítésének legegyszerűbb módja az AlapszintűHologram Win32-minta adaptozása.

Ez a Win32-minta a C++/WinRT,a Windows Runtime API-k C++17 nyelvi leképezését használja, amely támogatja a szabványoknak megfelelő C++17 fordítót. A projekt bemutatja, hogyan hozhat létre egy világ által zárolt kockát, amely 2 métert helyez el a felhasználótól. A felhasználó a vezérlő egyik gombját megnyomva a kocka a tekintete által meghatározott másik helyre kerül. Ezt a projektet módosíthatja vegyes valóságú alkalmazások létrehozásához.

Win32-alkalmazás belépési pontja

A holografikus Win32-alkalmazás az AppMain.cpp wWinMain függvényében indul el. A wWinMain függvény létrehozza az alkalmazás HWND-ját, és elindítja az üzenethurkját.

Az AppMain.cpp-ben:

int APIENTRY wWinMain(
    _In_     HINSTANCE hInstance,
    _In_opt_ HINSTANCE hPrevInstance,
    _In_     LPWSTR    lpCmdLine,
    _In_     int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    winrt::init_apartment();

    App app;

    // Initialize global strings, and perform application initialization.
    app.Initialize(hInstance);

    // Create the HWND and the HolographicSpace.
    app.CreateWindowAndHolographicSpace(hInstance, nCmdShow);

    // Main message loop:
    app.Run(hInstance);

    // Perform application teardown.
    app.Uninitialize();

    return 0;
}

Ettől a ponttól az AppMain osztály kezeli az alapszintű ablaküzeneteket és így tovább. Emellett az alkalmazás által használt HolographicSpace-t is létrehozza.

Holografikus tartalom renderelése

A projekt Content (Tartalom) mappája osztályokat tartalmaz a holografikus térben található hologramok renderelése érdekében. A sablon alapértelmezett hologramja egy forgó kocka, amely 2 méter távolságra van a felhasználótól. A kocka rajzolása a SpinningCubeRenderer.cppfájlbanvan megvalósítva, amely a következő fő metódusokkal rendelkezik:

Metódus Magyarázat
CreateDeviceDependentResources Betölti az árnyékolókat, és létrehozza a kockahálót.
PositionHologram A hologramot a megadott SpatialPointerPosehelyen adja meg.
Update Elforgatja a kockát, és beállítja a modellmátrixot.
Render Csúcs- és képpontárnyalók használatával renderel egy keretet.

A Shaders almappa négy alapértelmezett árnyékoló-implementációt tartalmaz:

Shader Magyarázat
GeometryShader.hlsl Egy áteredő, amely nem módosítja a geometriát.
PixelShader.hlsl Áthaladnak a színadatokon. A színadatok interpolálva vannak, és egy képponthoz vannak rendelve a raszterizálási lépésnél.
VertexShader.hlsl Egyszerű árnyékoló csúcsfeldolgozáshoz a GPU-ban.
VPRTVertexShader.hlsl Egyszerű árnyékoló a GPU csúcsának feldolgozásához, amely Windows Mixed Reality renderelésre van optimalizálva.

VertexShaderShared.hlsl A és a közös kódot VertexShader.hlslVPRTVertexShader.hlsl tartalmaz.

Megjegyzés: A Direct3D 12 alkalmazássablon a következőt is tartalmazza: ViewInstancingVertexShader.hlsl . Ez a változat d3D12 választható funkciókat használ a hatékonyabban renderelt sztereotens képekhez.

Az árnyékolók a projekt létrehozásakor fordítva töltődnek be a SpinningCubeRenderer::CreateDeviceDependentResources metódusba.

Interakció a hologramokkal

A felhasználói bemenet feldolgozása a SpatialInputHandler osztályban, amely egy SpatialInteractionManager példányt kap, és feliratkozik a SourcePressed eseményre. Ez lehetővé teszi a légi koppintásos kézmozdulatok és más térbeli beviteli események észlelését.

Holografikus tartalom frissítése

A vegyes valóságú alkalmazás egy játékhurkban frissül, amely alapértelmezés szerint az Update metódusban van megvalósítva a alkalmazásban. Az Update metódus frissíti a jelenetobjektumokat, például a forgó kockát, és egy HolographicFrame objektumot ad vissza, amely naprakész nézetet és leképezést, valamint a felcserélési láncot mutatja be.

A Render metódusa a alkalmazásban a HolographicFrame-et használja, és az aktuális alkalmazásnak és térbeli pozícióállapotnak megfelelően renderel minden holografikus kamerához az aktuális keretet.

Jegyzetek

A Windows Mixed Reality alkalmazássablon mostantól támogatja a fordítást, ha a Spectre kockázatcsökkentés jelzője engedélyezve van (/Qspectre). Győződjön meg arról, hogy a Microsoft Visual C++ (MSVC) futásidejű kódtárainak Spectre által enyhített verzióját telepíti, mielőtt olyan konfigurációt hoz létre, amelyen engedélyezve van a Spectre-kockázatcsökkentés. A Spectre által enyhített C++ kódtárak telepítéséhez indítsa el a Visual Studio telepítőjét, és válassza a Módosítás lehetőséget. Lépjen az Egyes összetevők részhez, és keressen rá a "spectre" kifejezésre. Jelölje be azokat a célplatformok és MSVC-verzió mezőket, amelyekhez a Spectre által enyhített kódot le kell fordítania, majd kattintson a Módosítás gombra a telepítés megkezdéséhez.

Lásd még