Vytvoření holografického projektu DirectX

Poznámka

Tento článek se týká původních rozhraní API pro starší verze WinRT. Pro nové projekty nativních aplikací doporučujeme používat rozhraní OpenXR API.

holografická aplikace, kterou vytvoříte pro HoloLens, bude aplikace Univerzální platforma Windows (UWP). pokud cílíte na desktopové Windows Mixed Reality sluchátka, můžete vytvořit aplikaci pro UWP nebo aplikaci Win32.

Šablona aplikace pro holografickou UWP DirectX 11 je podobná šabloně aplikace DirectX 11 pro UWP. Šablona obsahuje smyčku programu, třídu DeviceResources ke správě zařízení a kontextu Direct3D a zjednodušenou třídu rendereru obsahu. Má také IFrameworkView, stejně jako jakékoli jiné aplikace UWP.

Aplikace hybridní reality ale obsahuje některé další možnosti, které se nevyskytují v typické aplikaci Direct3D UWP. šablona aplikace Windows Mixed Reality může:

  • Zpracujte prostředky zařízení Direct3D spojené s holografickými fotoaparáty.
  • Načte ze systému vyrovnávací paměti pro zpětnou kameru. V případě Direct3D12 vytvořte holografické prostředky vyrovnávací paměti a spravujte životnost prostředků.
  • Zpracování vstupu pohledu a rozpoznání gesta.
  • Přejít do režimu stereofonního vykreslování na celé obrazovce.

Jak mám začít?

nejprve nainstalujte nástrojepodle pokynů na stránce stažení Visual Studio 2019 a šablon aplikace Windows Mixed Reality. šablony aplikací pro hybridní realitu jsou dostupné na webu Visual Studio marketplace jako web ke staženínebo při jejich instalaci jako rozšíření prostřednictvím uživatelského rozhraní Visual Studio.

nyní jste připraveni vytvořit aplikaci Windows Mixed Reality DirectX 11. Poznámka: Chcete-li odebrat ukázkový obsah, odkomentujte DRAW_SAMPLE_CONTENT direktivy preprocesoru v souboru PCH. h.

Vytvoření projektu UWP

Po instalaci nástrojů,] (.. install-the-tools.md) a pak můžete vytvořit projekt UWP v holografickém rozhraní DirectX.

vytvoření nového projektu v Visual Studio 2019:

  1. Spusťte Visual Studio.
  2. v části Začínáme na pravé straně vyberte vytvořit nový projekt.
  3. v rozevíracích nabídkách v dialogovém okně vytvořit nový projekt vyberte C++, Windows Mixed Realitya UWP.
  4. vyberte holografickou aplikaci DirectX 11 (Universal Windows) (C++/WinRT). snímek obrazovky s holografickou šablonou projektu aplikace/WinRT pro UWP pro DirectX v jazyce DirectX 11 v Visual Studio 2019
    holografická šablona projektu aplikace/WinRT UWP pro DirectX v jazyce C++ v Visual Studio 2019

    Důležité

    Ujistěte se, že název šablony projektu obsahuje "(C++/WinRT)". V takovém případě máte nainstalovanou starší verzi šablon holografických projektů. chcete-li získat nejnovější šablony projektu, nainstalujte je jako rozšíření Visual Studio 2019.

  5. Vyberte Další.
  6. do textových polí název Project a umístění zadejte a vyberte nebo klepněte na vytvořit. Vytvoří se projekt holografické aplikace.
  7. pro cílení na vývoj pouze HoloLens 2 zajistěte, aby cílová verze a minimální verze byly nastaveny na Windows 10 verze 1903. pokud cílíte i na HoloLens (1. generace) nebo desktopových Windows Mixed Realitych sluchátek, můžete nastavit minimální verzi na Windows 10 verze 1809. to bude vyžadovat, aby při použití nových funkcí HoloLens 2 byly v kódu nějaké adaptivní kontroly verzí . snímek obrazovky s nastavením Windows 10, verze 1903 jako cíle a minimální verze
    nastavení Windows 10, verze 1903 jako cíle a minimální verze

    Důležité

    pokud nevidíte Windows 10 verze 1903 jako možnost, nemáte nainstalovanou nejnovější sadu Windows 10 SDK. pokud chcete tuto možnost zobrazit, nainstalujte verzi 10.0.18362.0 nebo novější z Windows 10 SDK.

vytvoření nového projektu v Visual Studio 2017:

  1. Spusťte Visual Studio.
  2. v nabídce soubor přejděte na příkaz nový a v místní nabídce vyberte Project . otevře se dialogové okno nový Project .
  3. Rozbalte položku nainstalováno na levé straně a rozbalte uzel Visual C++ jazyk.
  4. přejděte do Windows univerzální holografický uzel a vyberte holografickou aplikaci DirectX 11 (univerzální Windows) (/WinRT C++). snímek obrazovky s holografickou šablonou projektu aplikace/WinRT pro UWP pro DirectX v jazyce DirectX 11 v Visual Studio 2017
    holografická šablona projektu aplikace/WinRT UWP pro DirectX v jazyce C++ v Visual Studio 2017

    Důležité

    Ujistěte se, že název šablony projektu obsahuje "(C++/WinRT)". V takovém případě máte nainstalovanou starší verzi šablon holografických projektů. chcete-li získat nejnovější šablony projektu, nainstalujte je jako rozšíření Visual Studio 2017.

  5. Do textových polí název a umístění zadejte a vyberte nebo klepněte na OK. Vytvoří se projekt holografické aplikace.
  6. pro cílení na vývoj pouze HoloLens 2 zajistěte, aby cílová verze a minimální verze byly nastaveny na Windows 10 verze 1903. pokud cílíte i na HoloLens (1. generace) nebo desktopových Windows Mixed Realitych sluchátek, můžete nastavit minimální verzi na Windows 10 verze 1809. to bude vyžadovat, aby při použití nových funkcí HoloLens 2 byly v kódu nějaké adaptivní kontroly verzí . snímek obrazovky s nastavením Windows 10, verze 1903 jako cíle a minimální verze
    nastavení Windows 10, verze 1903 jako cíle a minimální verze

    Důležité

    pokud nevidíte Windows 10 verze 1903 jako možnost, nemáte nainstalovanou nejnovější sadu Windows 10 SDK. pokud chcete tuto možnost zobrazit, nainstalujte verzi 10.0.18362.0 nebo novější z Windows 10 SDK.

šablona vygeneruje projekt pomocí c++/WinRT, projekce jazyka c++ 17 rozhraní api pro prostředí Windows Runtime, která podporuje všechny kompilátory c++ 17, které vyhovují standardům. Projekt ukazuje, jak vytvořit celosvětově uzamčenou datovou krychli, která je od uživatele umístěna 2 měřiči. Uživatel může klepnout nebo stisknout tlačítko na řadiči, aby se datová krychle umístila na jinou pozici určenou pohleduuživatele. Tento projekt můžete upravit tak, aby se vytvořila jakákoli aplikace hybridní reality.

Můžete také vytvořit nový projekt pomocí šablony holografického projektu Visual C# , která je založená na SharpDX. pokud se váš holografický projekt C# nespustil ze šablony Windows holografické aplikace, budete muset zkopírovat soubor ms. fxcompile. targets z projektu šablony Windows Mixed Reality C# a naimportovat ho do souboru. csproj pro zkompilování souborů HLSL, které přidáte do projektu. šablona Direct3D 12 je k dispozici také v rozšíření Windows Mixed Reality app templates extension Visual Studio.

přečtěte si téma použití Visual Studio k nasazení a ladění informací o tom, jak sestavit a nasadit ukázku do HoloLens, počítače s připojeným ponořeným zařízením nebo emulátoru.

Zbývající kroky níže budou předpokládat, že k sestavení aplikace používáte C++.

Vstupní bod aplikace UWP

Vaše holografická aplikace UWP začíná ve funkci wWinMain v AppView. cpp. Funkce wWinMain vytvoří IFrameworkView aplikace a spustí s ní CoreApplication .

Z AppView. cpp:

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

od tohoto okamžiku třída AppView zpracovává interakci s Windows základními událostmi vstupu, CoreWindow událostmi a zasíláním zpráv a tak dále. Vytvoří také HolographicSpace, který používá vaše aplikace.

Vytvoření projektu Win32

Nejjednodušší způsob, jak začít vytvářet holografický projekt Win32, je přizpůsobení ukázky BasicHologram Win32.

tato ukázka Win32 používá c++/WinRT, projekci jazyka c++ 17 rozhraní api pro prostředí Windows Runtime, která podporuje všechny kompilátory c++ 17, které vyhovují standardům. Projekt ukazuje, jak vytvořit celosvětově uzamčenou datovou krychli, která je od uživatele umístěna 2 měřiči. Uživatel může stisknutím tlačítka na řadiči umístit datovou krychli na jinou pozici, kterou Určuje pohleduuživatele. Tento projekt můžete upravit tak, aby se vytvořila jakákoli aplikace hybridní reality.

Vstupní bod aplikace Win32

Vaše holografická aplikace Win32 se spustí ve funkci wWinMain v AppMain. cpp. Funkce wWinMain vytvoří HWND aplikace a spustí svou smyčku zpráv.

Z AppMain. cpp:

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;
}

Od tohoto okamžiku, třída AppMain zpracovává interakce se základními zprávami oken a tak dále. Vytvoří také HolographicSpace, který používá vaše aplikace.

Vykreslení holografického obsahu

Složka obsahu projektu obsahuje třídy pro vykreslování hologramů v holografickém prostoru. Výchozí hologram v šabloně je rotující krychle, která je umístěná 2 měřiči od uživatele. Vykreslování této datové krychle je implementováno v SpinningCubeRenderer. cpp, které obsahuje tyto klíčové metody:

Metoda Vysvětlení
CreateDeviceDependentResources Načte shadery a vytvoří mřížku datové krychle.
PositionHologram Umístí hologram do umístění určeného zadaným SpatialPointerPose.
Update Otočí datovou krychli a nastaví matrici modelu.
Render Vykreslí snímek pomocí vrcholu a pixel shaderů.

Podsložka shadery obsahuje čtyři výchozí implementace shaderu:

Funkce Vysvětlení
GeometryShader.hlsl Předávací, který nechá geometrii beze změny.
PixelShader.hlsl Projde daty barev. Barevná data se interpolují a přiřazují pixelům v kroku rastrování.
VertexShader.hlsl Jednoduchý shader, který zpracovává vrcholy na GPU.
VPRTVertexShader.hlsl jednoduchý shader, který zpracovává vrcholy na GPU, které je optimalizované pro Windows Mixed Realityé vykreslování stereo.

VertexShaderShared.hlsl obsahuje společný kód sdílený mezi VertexShader.hlsl a VPRTVertexShader.hlsl .

Poznámka: Šablona aplikace Direct3D 12 také obsahuje ViewInstancingVertexShader.hlsl . Tato varianta používá D3D12 volitelné funkce k efektivnějšímu vygenerování stereofonních imagí.

Shadery se zkompiluje při sestavení projektu a načteny do metody SpinningCubeRenderer:: CreateDeviceDependentResources .

Interakce s vašimi hologramy

Vstup uživatele je zpracován ve třídě SpatialInputHandler , která získá instanci SpatialInteractionManager a přihlásí se k odběru události SourcePressed . To umožňuje detekci gesta na vzduchu a dalších vstupních událostí.

Aktualizace holografického obsahu

Vaše aplikace ve vaší hybridní realitě se aktualizuje v herní smyčce, která je ve výchozím nastavení implementovaná v metodě Update v . Metoda aktualizace aktualizuje objekty scény, podobně jako otáčející se krychle, a vrátí objekt HolographicFrame , který se používá k získání aktuálního zobrazení a matic projekce a k prezentaci řetězce přepnutí.

Metoda vykreslení v v nástroji přijímá HolographicFrame a vykresluje aktuální rámec ke každé holografické kameře podle aktuální aplikace a stavu prostorového umístění.

Poznámky

šablona Windows Mixed Reality app teď podporuje kompilaci s povoleným příznakem pro zmírnění Spectre (/Qspectre). před kompilací konfigurace s povoleným omezením na Spectre se ujistěte, že jste nainstalovali Spectreou verzi knihoven runtime Microsoft Visual C++ (MSVC). pokud chcete nainstalovat Spectre knihovny C++ s omezením, spusťte Instalační program pro Visual Studio a vyberte upravit. Přejděte na jednotlivé součásti a vyhledejte "Spectre". zaškrtněte políčka odpovídající cílovým platformám a verzi MSVC, kterou potřebujete k zkompilování Spectre kódu pro, a kliknutím na tlačítko upravit spusťte instalaci.

Viz také