Holographic DirectX projesi oluşturma

Not

Bu makale, eski WinRT Native API 'Lerle ilgilidir. Yeni yerel uygulama projeleri için Openxr API'sini kullanmanızı öneririz.

HoloLens için oluşturduğunuz bir holographic uygulaması Evrensel Windows Platformu (UWP) uygulamasıolacaktır. masaüstü Windows Mixed Reality kulaklıklar hedefleniyorsa bir UWP uygulaması veya bir Win32 uygulaması oluşturabilirsiniz.

DirectX 11 holographic UWP uygulama şablonu, DirectX 11 UWP uygulama şablonuna çok benzer. Şablon, Direct3D cihazını ve bağlamını yönetmek için bir program döngüsü, bir DeviceResources sınıfı ve Basitleştirilmiş içerik Oluşturucu sınıfı içerir. Ayrıca, tıpkı diğer UWP uygulamaları gibi bir Iframeworkviewvardır.

Ancak, karma gerçeklik uygulamasının tipik bir Direct3D UWP uygulamasında bulunmayan bazı ek özellikleri vardır. Windows Mixed Reality uygulama şablonu şunları yapabilir:

  • Holographic kameralarla ilişkili Direct3D cihaz kaynaklarını işleyin.
  • Sistemden kamera geri arabelleklerini alın. Direct3D12 durumunda, Holographic Back buffer kaynakları oluşturun ve kaynak yaşam sürelerini yönetin.
  • Girişi işleme ve hareketitanıma.
  • Tam ekran stereo işleme moduna geçin.

Nasıl kullanmaya başlayabilirim?

ilk olarak araçları yüklemeVisual Studio 2019 ve Windows Mixed Reality uygulama şablonlarını indirme yönergelerini takip edin. karma gerçeklik uygulama şablonları, Visual Studio marketi 'nde bir web indirmesiolarak veya Visual Studio kullanıcı arabirimi aracılığıyla bir uzantı olarak yüklenerek kullanılabilir.

şimdi DirectX 11 Windows Mixed Reality uygulamanızı oluşturmaya hazırsınız! Örnek içeriği kaldırmak için, pch. hiçinde DRAW_SAMPLE_CONTENT Önişlemci yönergesini açıklama olarak not alın.

UWP projesi oluşturma

Araçlar yüklendikten sonra,] (.. /install-the-tools.md) daha sonra bir holographic DirectX UWP projesi oluşturabilirsiniz.

Visual Studio 2019 ' de yeni bir proje oluşturmak için:

  1. Visual Studiobaşlatın.
  2. sağdaki Başlarken bölümünde yeni proje oluştur' u seçin.
  3. yeni proje oluştur iletişim kutusundaki açılan menülerde C++, Windows Mixed Realityve UWP' yi seçin.
  4. Holographic DirectX 11 uygulaması (evrensel Windows) (C++/wınrt)seçeneğini belirleyin. Visual Studio 2019 ' de Holographic DirectX 11 C++/wınrt UWP uygulaması proje şablonunun ekran görüntüsü
    Visual Studio 2019 ' de DirectX 11 C++/wınrt UWP uygulaması proje şablonu Holographic

    Önemli

    Proje şablonunun adının "(C++/Wınrt)" içerdiğinden emin olun. Aksi takdirde, Holographic proje şablonlarının daha eski bir sürümü yüklüdür. en son proje şablonlarını almak için, Visual Studio 2019 ' ye bir uzantı olarak yükler .

  5. İleri’yi seçin.
  6. Project adı ve konumu metin kutularını doldurup oluştur' u seçin veya dokunun. Holographic uygulama projesi oluşturulur.
  7. yalnızca HoloLens 2 ' yi hedefleyen geliştirme için, hedef sürümün ve en düşük sürümün, sürüm 1903 Windows 10olarak ayarlandığından emin olun. ayrıca, HoloLens (1. gen) veya masaüstü Windows Mixed Reality kulaklık ' i hedefliyorsanız, en düşük sürümüWindows 10, sürüm 1809olarak ayarlayabilirsiniz. bu, HoloLens 2 ' nin yeni özellikleri kullanılırken kodunuzda bazı sürüm uyarlamalı denetimleri gerektirir. hedef ve en düşük sürümler olarak Windows 10, sürüm 1903 ayarının ekran görüntüsü
    Windows 10, sürüm 1903 ' i hedef ve en düşük sürümler olarak ayarlama

    Önemli

    bir seçenek olarak Windows 10, sürüm 1903 ' i görmüyorsanız, en son Windows 10 SDK yüklü değildir. bu seçeneğin görünmesini sağlamak için Windows 10 SDK 'sının version 10.0.18362.0 veya üzeri sürümünü yüklemelisiniz.

Visual Studio 2017 ' de yeni bir proje oluşturmak için:

  1. Visual Studiobaşlatın.
  2. dosya menüsünde, yeni ' nin üzerine gelin ve bağlam menüsünden Project ' yi seçin. yeni Project iletişim kutusu açılır.
  3. Sol tarafta yüklü ' ı genişletin ve Visual C++ dil düğümünü genişletin.
  4. Windows Universal Holographic düğümüne gidin ve Holographic DirectX 11 uygulaması (evrensel Windows) (C++/wınrt)seçeneğini belirleyin. Visual Studio 2017 ' de Holographic DirectX 11 C++/wınrt UWP uygulaması proje şablonunun ekran görüntüsü
    Visual Studio 2017 ' de DirectX 11 C++/wınrt UWP uygulaması proje şablonu Holographic

    Önemli

    Proje şablonunun adının "(C++/Wınrt)" içerdiğinden emin olun. Aksi takdirde, Holographic proje şablonlarının daha eski bir sürümü yüklüdür. en son proje şablonlarını almak için, Visual Studio 2017 ' ye bir uzantı olarak yükler .

  5. Ad ve konum metin kutularını doldurup Tamam' ı seçin veya dokunun. Holographic uygulama projesi oluşturulur.
  6. yalnızca HoloLens 2 ' yi hedefleyen geliştirme için, hedef sürümün ve en düşük sürümün, sürüm 1903 Windows 10olarak ayarlandığından emin olun. ayrıca, HoloLens (1. gen) veya masaüstü Windows Mixed Reality kulaklık ' i hedefliyorsanız, en düşük sürümüWindows 10, sürüm 1809olarak ayarlayabilirsiniz. bu, HoloLens 2 ' nin yeni özellikleri kullanılırken kodunuzda bazı sürüm uyarlamalı denetimleri gerektirir. hedef ve en düşük sürümler olarak Windows 10, sürüm 1903 ayarının ekran görüntüsü
    Windows 10, sürüm 1903 ' i hedef ve en düşük sürümler olarak ayarlama

    Önemli

    bir seçenek olarak Windows 10, sürüm 1903 ' i görmüyorsanız, en son Windows 10 SDK yüklü değildir. bu seçeneğin görünmesini sağlamak için Windows 10 SDK 'sının version 10.0.18362.0 veya üzeri sürümünü yüklemelisiniz.

şablon, standartlara uyumlu c++ 17 derleyicisini destekleyen Windows Çalışma Zamanı apı 'lerinin c++ 17 dil projeksiyonu olan c++/wınrtkullanarak bir proje oluşturur. Proje, kullanıcıdan 2 Ölçüm yerleştirilmiş bir dünya çapında kilitli küpün nasıl oluşturulacağını gösterir. Kullanıcı, küpü kullanıcının Gazetarafından belirtilen farklı bir konuma yerleştirmek için, denetleyicideki bir düğmeye hava veya dokunarak bir düğmeye basabilir. Bu projeyi, herhangi bir karma gerçeklik uygulaması oluşturmak için değiştirebilirsiniz.

Ayrıca, parça PDX 'yi temel alan Visual C# holographic proje şablonunu kullanarak yeni bir proje oluşturabilirsiniz. holographic c# projeniz Windows holographic uygulama şablonundan başlamadıysanız, projenize eklediğiniz hlsl dosyalarını derlemek için, bir Windows Mixed Reality c# şablon projesinden ms. fxcompile. targets dosyasını kopyalamanız ve. csproj dosyanıza aktarmanız gerekir. Visual Studio için Windows Mixed Reality uygulama şablonları uzantısında bir Direct3D 12 şablonu da sağlanır.

örneği HoloLens oluşturma ve hata ayıklama hakkında bilgi edinmek için Visual Studio kullanarak , tam ekran özellikli bir cihaz eklenmiş bilgisayar veya bir öykünücü kullanın.

Aşağıdaki yönergelerin geri kalanında uygulamanızı derlemek için C++ kullandığınızı varsayacaktır.

UWP uygulama giriş noktası

Holographic UWP uygulamanız, AppView. cpp içindeki wWinMain işlevinde başlar. WWinMain işlevi, uygulamanın Iframeworkview öğesini oluşturur ve coreapplication 'ı onunla başlatır.

Appview. cppöğesinden:

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

bu noktadan itibaren appview sınıfı, Windows temel giriş olayları, corewindow olayları ve mesajlaşma gibi etkileşim ve benzerlerini işler. Ayrıca, uygulamanız tarafından kullanılan HolographicSpace de oluşturulur.

Win32 projesi oluşturma

Win32 holographic projesi oluşturmaya başlamanın en kolay yolu, basichologram Win32 örneğiniuyarlayaoluşturmaktır.

bu Win32 örneği, standartlara uyumlu c++ 17 derleyicisini destekleyen Windows Çalışma Zamanı apı 'lerinin c++ 17 dil projeksiyonu olan c++/wınrtkullanır. Proje, kullanıcıdan 2 Ölçüm yerleştirilmiş bir dünya çapında kilitli küpün nasıl oluşturulacağını gösterir. Kullanıcı, kübü kullanıcının Gazetarafından belirtilen farklı bir konuma yerleştirmek için denetleyicideki bir düğmeye basabilir. Bu projeyi, herhangi bir karma gerçeklik uygulaması oluşturmak için değiştirebilirsiniz.

Win32 uygulama giriş noktası

Holographic Win32 uygulamanız AppMain. cpp içindeki wWinMain işlevinde başlar. WWinMain işlevi, uygulamanın HWND 'sini oluşturur ve ileti döngüsünü başlatır.

Appmain. cppöğesinden:

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

Bu noktadan itibaren AppMain sınıfı, temel pencere iletileriyle etkileşimi işler ve bu şekilde devam eder. Ayrıca, uygulamanız tarafından kullanılan HolographicSpace de oluşturulur.

Holographic içeriğini işle

Projenin içerik klasörü, holographic alanındahologram işlemek için sınıflar içerir. Şablondaki varsayılan hologram, kullanıcıdan 2 Ölçüm yerleştirmiş olan bir dönen küptür. Bu küpü çizmek, şu temel yöntemlere sahip olan SpinningCubeRenderer.cppiçinde uygulanır:

Yöntem Açıklama
CreateDeviceDependentResources Gölgelendiricileri yükler ve küp ağı oluşturur.
PositionHologram Hologramı, sağlanan SpatialPointerPose tarafından belirtilen konuma yer ettirin.
Update Küpü döndürerek model matrisini ayarlar.
Render Köşe ve piksel gölgelendiricileri kullanarak bir çerçeveyi işler.

Gölgelendiriciler alt klasörü dört varsayılan gölgelendirici uygulaması içerir:

Gölgelendirici Açıklama
GeometryShader.hlsl Geometriyi değiştirilmeden bırakan bir geçiş.
PixelShader.hlsl Renk verilerini geçer. Renk verileri ilişkilendirme ve tarama adımında bir piksele atanır.
VertexShader.hlsl GPU üzerinde köşe işlemesi yapmak için basit gölgelendirici.
VPRTVertexShader.hlsl GPU üzerinde köşe işlemesi yapmak için basit gölgelendirici, stereo işleme için Windows Mixed Reality iyileştirilmiştir.

VertexShaderShared.hlsl ile arasında paylaşılan ortak kodu VertexShader.hlslVPRTVertexShader.hlsl içerir.

Not: Direct3D 12 uygulama şablonu da ViewInstancingVertexShader.hlsl içerir. Bu değişken, stereo görüntüleri daha verimli bir şekilde işlemek için D3D12 isteğe bağlı özelliklerini kullanır.

Gölgelendiriciler proje derlenmiş ve SpinningCubeRenderer::CreateDeviceDependentResources yöntemine yüklendiğinde derleniyor.

Hologramlarla etkileşim kurma

Kullanıcı girişi SpatialInputHandler sınıfında işlenir. Bu sınıf SpatialInteractionManager örneğini alır ve SourcePressed olayına abone olur. Bu, havadan dokunma hareketi ve diğer uzamsal giriş olaylarını algılamaya olanak sağlar.

Holografik içeriği güncelleştirme

Karma gerçeklik uygulamanız, 'de Update yönteminde varsayılan olarak uygulanan bir oyun döngüsünde güncelleştirmesidir. Update yöntemi dönen küp gibi sahne nesnelerini güncelleştirmesi ve güncel görünüm ve projeksiyon matrislerini almak ve değiştirme zincirini sunmak için kullanılan bir HolographicFrame nesnesi döndürür.

içinde İşleme yöntemi HolographicFrame'i alır ve geçerli uygulamaya ve uzamsal konumlandırma durumuna göre geçerli kareyi her holografik kameraya işler.

Notlar

Uygulama Windows Mixed Reality artık Spectre azaltma bayrağı etkin (/Qspectre) ile derlemeyi destekliyor. Spectre azaltma etkin bir yapılandırma derlemeden önce Microsoft Visual C++ (MSVC) çalışma zamanı kitaplıklarının Spectre-mitigated sürümünün yüklü olduğundan emin olun. Spectre-mitigated C++ kitaplıklarını yüklemek için, Visual Studio Yükleyicisi'yi açın ve Değiştir'i seçin. Bağımsız bileşenler'e gidin ve "spectre" araması için arama. Hedef platformlara karşılık gelen kutuları seçin MSVC için Spectre-mitigated kodunu derlemeniz gereken sürümü seçin ve yükleye başlamak için Değiştir'e tıklayın.

Ayrıca bkz.