Holografikus DirectX-projekt létrehozása

Megjegyzés

Ez a cikk az örökölt WinRT natív API-kkal kapcsolatos. Új natív alkalmazásprojektekhez az OpenXR API használatát javasoljuk.

A HoloLenshez létrehozott holografikus alkalmazások Univerzális Windows-platform (UWP) alkalmazások lesznek. Ha asztali Windows Mixed Reality headseteket céloz meg, UWP-alkalmazást vagy Win32-alkalmazást is létrehozhat.

A DirectX 11 holografikus UWP-alkalmazássablonja hasonlít a DirectX 11 UWP-alkalmazássablonhoz. A sablon tartalmaz egy programhurkot, egy DeviceResources osztályt a Direct3D eszköz és környezet kezeléséhez, valamint egy egyszerűsített tartalom renderelő osztályt. Emellett rendelkezik IFrameworkView-tal is, mint bármely más UWP-alkalmazással.

A vegyes valóság alkalmazás azonban rendelkezik néhány további képességekkel, amelyek nem szerepelnek egy tipikus Direct3D UWP-alkalmazásban. A Windows Mixed Reality alkalmazássablon a következőket teheti:

  • Holografikus kamerákhoz társított Direct3D-eszközerőforrások kezelése.
  • A kamera visszapuffereinek lekérése a rendszerből. Direct3D12 esetén holografikus visszapuffererőforrások létrehozása és az erőforrás-élettartamok kezelése.
  • Kezelje a tekintetbemenetet , és felismerje a kézmozdulatokat.
  • Lépjen teljes képernyős sztereó renderelési módba.

Hogyan kezdhetek hozzá?

Először telepítse az eszközöket a Visual Studio 2019 és a Windows Mixed Reality alkalmazássablonok letöltésére vonatkozó utasításokat követve. A vegyes valóság alkalmazássablonjai webes letöltésként vagy bővítményként a Visual Studio felhasználói felületén érhetők el a Visual Studio piacterén.

Most már készen áll a DirectX 11-Windows Mixed Reality alkalmazás létrehozására! Vegye figyelembe, hogy a mintatartalom eltávolításához tegye megjegyzésbe a DRAW_SAMPLE_CONTENT előfeldolgozó irányelvét a pch.h fájlban.

UWP-projekt létrehozása

Az eszközök telepítése után létrehozhat egy holografikus DirectX UWP-projektet.

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

  1. Indítsa el a Visual Studiót.
  2. A jobb oldali Első lépések szakaszban válassza az Új projekt létrehozása lehetőséget.
  3. Az Új projekt létrehozása párbeszédpanel legördülő menüjében 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ásprojekt sablonról a Visual Studio 2019-ben
    Holographic DirectX 11 C++/WinRT UWP alkalmazásprojektsablon a Visual Studio 2019-ben

    Fontos

    Győződjön meg arról, hogy a projektsablon neve tartalmazza a következőt: "(C++/WinRT)". Ha nem, akkor a holografikus projektsablonok egy régebbi verziója van telepítve. A legújabb projektsablonok beszerzéséhez telepítse őket a Visual Studio 2019 bővítményeként.

  5. Kattintson a Tovább gombra.
  6. Töltse ki a Projekt neve és a Hely szövegmezőt, majd válassza vagy koppintson a Létrehozás gombra. Létrejön a holografikus alkalmazásprojekt.
  7. Ha csak a HoloLens 2 szeretne fejlesztést célba adni, győződjön meg arról, hogy a Célverzió és a Minimális verzióaz 1903-Windows 10 értékre van állítva. Ha a HoloLens (1. generációs) vagy asztali Windows Mixed Reality headseteket is célozza, beállíthatja a Minimális verziótWindows 10, 1809-es verzió értékre. Ehhez a kódban adaptív verzióellenőrzésre lesz szükség a HoloLens 2 új funkcióinak használatakor. Képernyőkép a Windows 10, az 1903-as verzió célként és minimális verzióként való beállításáról
    Windows 10, 1903-as verzió beállítása célként é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. A beállítás megjelenítéséhez telepítse a Windows 10 SDK 10.0.18362.0-s vagy újabb verzióját.

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

  1. Indítsa el a Visual Studiót.
  2. A Fájl menüben mutasson az Új elemre, és válassza a Helyi menü Projekt elemét. Megnyílik az Új projekt párbeszédpanel.
  3. Bontsa ki a Bal oldalon telepített csomópontot, és bontsa ki a Visual C++ nyelvi csomópontot.
  4. Lépjen a Windows univerzális > holografikus csomópontjára, é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ásprojekt sablonról a Visual Studio 2017-ben
    Holographic DirectX 11 C++/WinRT UWP alkalmazásprojektsablon a Visual Studio 2017-ben

    Fontos

    Győződjön meg arról, hogy a projektsablon neve tartalmazza a következőt: "(C++/WinRT)". Ha nem, akkor a holografikus projektsablonok egy régebbi verziója van telepítve. A legújabb projektsablonok beszerzéséhez telepítse őket a Visual Studio 2017 bővítményeként.

  5. Töltse ki a Névés hely szövegmezőt, és válassza vagy koppintson az OK gombra. Létrejön a holografikus alkalmazásprojekt.
  6. Ha csak a HoloLens 2 szeretne fejlesztést célba adni, győződjön meg arról, hogy a Célverzió és a Minimális verzióaz 1903-Windows 10 értékre van állítva. Ha a HoloLens (1. generációs) vagy asztali Windows Mixed Reality headseteket is célozza, beállíthatja a Minimális verziótWindows 10, 1809-es verzió értékre. Ehhez a kódban adaptív verzióellenőrzésre lesz szükség a HoloLens 2 új funkcióinak használatakor. Képernyőkép a Windows 10, az 1903-as verzió célként és minimális verzióként való beállításáról
    Windows 10, 1903-as verzió beállítása célként é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. A beállítás megjelenítéséhez telepítse a Windows 10 SDK 10.0.18362.0-s vagy újabb verzióját.

A sablon C++/WinRT használatával hoz létre egy projektet, amely az Windows-futtatókörnyezet API-k C++17 nyelvi leképezése, amely támogatja a szabványoknak megfelelő C++17 fordítókat. A projekt bemutatja, hogyan hozhat létre egy világra zárolt kockát, amely 2 méterre van a felhasználótól. A felhasználó a vezérlő egy gombjára koppintva vagy lenyomva elhelyezheti a kockát a felhasználó tekintete által megadott másik pozícióban. Ezt a projektet bármilyen vegyes valósági alkalmazás létrehozásához módosíthatja.

Új projektet is létrehozhat a Visual C# holografikus projektsablonnal, amely a SharpDX-en alapul. Ha a holografikus C#-projekt nem a Windows Holographic alkalmazássablonból indult, át kell másolnia az ms.fxcompile.targets fájlt egy Windows Mixed Reality C#-sablonprojektből, és importálnia kell a.csproj fájlba a projekthez hozzáadott HLSL-fájlok fordításához. Egy Direct3D 12-sablont a Visual Studio Windows Mixed Reality alkalmazássablonok bővítménye is biztosít.

Tekintse át a Visual Studio használatával történő üzembe helyezést és hibakeresést ismertető cikket, amelyből megtudhatja, hogyan hozhatja létre és helyezheti üzembe a mintát a HoloLensben, a csatlakoztatott modern eszközzel rendelkező PC-n vagy egy emulátoron.

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

UWP-alkalmazás belépési pontja

A holografikus UWP-alkalmazás az AppView.cpp wWinMain függvényében kezdődik. A wWinMain függvény létrehozza az alkalmazás IFrameworkView elemét, és ezzel elindítja a CoreApplicationt .

Az AppView.cpp fájlból:

// 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 kezdve az AppView osztály kezeli a Windows alapszintű bemeneti eseményeivel, a CoreWindow-eseményekkel és az üzenetkezeléssel stb. való interakciót. Emellett létrehozza az alkalmazás által használt HolographicSpace-t is.

Win32-projekt létrehozása

A Win32 holografikus projekt létrehozásának legegyszerűbb módja az BasicHologram Win32 minta adaptálása.

Ez a Win32-minta C++/WinRT, a Windows-futtatókörnyezet API-k C++17 nyelvi leképezését használja, amely támogatja a szabványoknak megfelelő C++17 fordítókat. A projekt bemutatja, hogyan hozhat létre egy világra zárolt kockát, amely 2 méterre van a felhasználótól. A felhasználó megnyomhat egy gombot a vezérlőn, hogy a kockát a felhasználó tekintete által megadott másik pozícióba helyezze. Ezt a projektet bármilyen vegyes valósági alkalmazás létrehozásához módosíthatja.

Win32-alkalmazás belépési pontja

A holografikus Win32-alkalmazás az AppMain.cpp wWinMain függvényében kezdődik. A wWinMain függvény létrehozza az alkalmazás HWND-jét, és elindítja az üzenethurkot.

Az AppMain.cpp fájlból:

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 kezdve az AppMain osztály kezeli az alapszintű ablakos üzenetekkel való interakciót, és így tovább. Emellett létrehozza az alkalmazás által használt HolographicSpace-t is.

Holografikus tartalom renderelése

A projekt Content mappája osztályokat tartalmaz a hologramok holografikus térben való megjelenítéséhez. A sablon alapértelmezett hologramja egy forgó kocka, amely 2 méterre van a felhasználótól. A kocka megrajzolása a SpinningCubeRenderer.cpp fájlban történik, 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 SpatialPointerPose által megadott helyre helyezi.
Update Elforgatja a kockát, és beállítja a modellmátrixot.
Render A csúcspont és a képpontárnyékolók használatával renderel egy keretet.

A Shaders almappája négy alapértelmezett shader-implementációt tartalmaz:

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

VertexShaderShared.hlsla és VPRTVertexShader.hlsla között VertexShader.hlsl megosztott közös kódot tartalmazza.

Megjegyzés: A Direct3D 12 alkalmazássablon a következőt is tartalmazza ViewInstancingVertexShader.hlsl: . Ez a változat a D3D12 opcionális funkcióit használja a sztereó képek hatékonyabb rendereléséhez.

Az árnyékolók a projekt létrehozásakor állnak össze, és a SpinningCubeRenderer::CreateDeviceDependentResources metódusba töltődnek be.

A hologramok kezelése

A felhasználói bemenet feldolgozása a SpatialInputHandler osztályban történik, amely egy SpatialInteractionManager-példányt kap, és feliratkozik a SourcePressed eseményre. Ez lehetővé teszi a légkondenzálás kézmozdulatának és más térbeli bemeneti események észlelését.

Holografikus tartalom frissítése

A vegyes valóság alkalmazás frissítései egy játékhurokban, amely alapértelmezés szerint az Update metódusban van implementálva a rendszerben AppMain.cpp. Az Update metódus frissíti a jelenetobjektumokat, például a forgó kockát, és visszaad egy HolographicFrame objektumot, amely a naprakész nézet- és leképezési mátrixok lekérésére és a felcserélési lánc bemutatására szolgál.

A Render metódusa AppMain.cpp a HolographicFrame-et használja, és az aktuális keretet minden holografikus kamerára rendereli az aktuális alkalmazás és térbeli helymeghatározási állapot szerint.

Jegyzetek

A Windows Mixed Reality alkalmazássablon mostantól támogatja a fordítást, ha engedélyezve van a Spectre kockázatcsökkentési jelző (/Qspectre). Mindenképpen telepítse a Microsoft Visual C++ (MSVC) futtatókörnyezeti kódtárak Spectre által csökkentett verzióját, mielőtt összeállít egy konfigurációt, amelyen engedélyezve van a Spectre-kockázatcsökkentés. A Spectre által csökkentett C++ kódtárak telepítéséhez indítsa el a Visual Studio Telepítőt, és válassza a Módosítás lehetőséget. Lépjen az Egyes összetevők elemre, és keressen rá a "spectre" kifejezésre. Jelölje ki azoknak a célplatformoknak és MSVC-verziónak megfelelő mezőket, amelyekhez spectre-mitigated kódot kell lefordítania, majd kattintson a Módosítás gombra a telepítés megkezdéséhez.

Lásd még