Holografik DirectX projesi oluşturma

Not

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

HoloLens için oluşturduğunuz holografik uygulama bir Evrensel Windows Platformu (UWP) uygulaması olacaktır. Masaüstü Windows Mixed Reality kulaklıkları hedefliyorsanız bir UWP uygulaması veya Win32 uygulaması oluşturabilirsiniz.

DirectX 11 holografik UWP uygulama şablonu, DirectX 11 UWP uygulama şablonuna çok benzer. Şablon bir program döngüsü, Direct3D cihazını ve bağlamını yönetmek için deviceResources sınıfı ve basitleştirilmiş bir içerik işleyici sınıfı içerir. Ayrıca, diğer tüm UWP uygulamaları gibi bir IFrameworkView'a sahiptir.

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

  • Holografik kameralarla ilişkili Direct3D cihaz kaynaklarını işleyebilir.
  • Sistemden kamera geri arabelleklerini alın. Direct3D12 söz konusu olduğunda holografik arka arabellek kaynakları oluşturun ve kaynak yaşam sürelerini yönetin.
  • Bakış girişini işleyebilir ve bir hareketi tanıyabilirsiniz.
  • Tam ekran stereo işleme moduna geçin.

Nasıl kullanmaya başlayabilirim?

Önce Visual Studio 2019 ve Windows Mixed Reality uygulama şablonlarını indirme yönergelerini izleyerek araçları yükleyin. Karma gerçeklik uygulaması şablonları Visual Studio marketinde web indirmesi olarak veya Visual Studio kullanıcı arabirimi aracılığıyla uzantı olarak yüklenerek kullanılabilir.

Artık DirectX 11 Windows Mixed Reality uygulamanızı oluşturmaya hazırsınız! Örnek içeriği kaldırmak için pch.h dosyasındaki DRAW_SAMPLE_CONTENT önişlemci yönergesini açıklama satırı yapın.

UWP projesi oluşturma

Araçlar yüklendikten sonra holografik bir DirectX UWP projesi oluşturabilirsiniz.

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

  1. Visual Studio'yu baş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 Reality ve UWP'yi seçin.
  4. Holografik DirectX 11 Uygulaması (Evrensel Windows) (C++/WinRT) seçeneğini belirleyin. Visual Studio 2019'da Holographic DirectX 11 C++/WinRT UWP uygulama proje şablonunun ekran görüntüsü
    Visual Studio 2019'da Holographic DirectX 11 C++/WinRT UWP uygulama proje şablonu

    Önemli

    Proje şablonunun adının "(C++/WinRT)" içerdiğinden emin olun. Aksi takdirde holografik proje şablonlarının eski bir sürümü yüklüdür. En son proje şablonlarını almak için visual studio 2019 uzantısı olarak yükleyin .

  5. İleri’yi seçin.
  6. Proje adı ve Konum metin kutularını doldurun ve Oluştur'u seçin veya dokunun. Holografik uygulama projesi oluşturulur.
  7. Yalnızca HoloLens 2 geliştirme hedeflemesi için Hedef sürümün ve En düşük sürümünWindows 10 sürüm 1903 olarak ayarlandığından emin olun. HoloLens (1. nesil) veya masaüstü Windows Mixed Reality mikrofonlu kulaklıkları da hedefliyorsanız En düşük sürümüWindows 10, sürüm 1809 olarak ayarlayabilirsiniz. Bu, HoloLens 2'in yeni özelliklerini kullanırken kodunuzda bazı sürüm uyarlamalı denetimler gerektirir. Windows 10, sürüm 1903'ün hedef ve en düşük sürüm olarak ayarlanmasının ekran görüntüsü
    Hedef ve en düşük sürüm olarak Windows 10, sürüm 1903'ün ayarlanması

    Önemli

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

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

  1. Visual Studio'yu başlatın.
  2. Dosyamenüsünden Yeni'nin üzerine gelin ve bağlam menüsünden Proje'yi seçin. Yeni Proje iletişim kutusu açılır.
  3. Sol tarafta Yüklü'leri genişletin ve Visual C++ dil düğümünü genişletin.
  4. Windows Evrensel > Holografik düğümüne gidin ve Holographic DirectX 11 Uygulaması (Evrensel Windows) (C++/WinRT) seçeneğini belirleyin. Visual Studio 2017'de Holographic DirectX 11 C++/WinRT UWP uygulama projesi şablonunun ekran görüntüsü
    Visual Studio 2017'de Holographic DirectX 11 C++/WinRT UWP uygulama projesi şablonu

    Önemli

    Proje şablonunun adının "(C++/WinRT)" içerdiğinden emin olun. Aksi takdirde holografik proje şablonlarının eski bir sürümü yüklüdür. En son proje şablonlarını almak için visual studio 2017 uzantısı olarak yükleyin .

  5. Ad ve Konum metin kutularını doldurun ve Tamam'ı seçin veya dokunun. Holografik uygulama projesi oluşturulur.
  6. Yalnızca HoloLens 2 geliştirme hedeflemesi için Hedef sürümün ve En düşük sürümünWindows 10 sürüm 1903 olarak ayarlandığından emin olun. HoloLens (1. nesil) veya masaüstü Windows Mixed Reality mikrofonlu kulaklıkları da hedefliyorsanız En düşük sürümüWindows 10, sürüm 1809 olarak ayarlayabilirsiniz. Bu, HoloLens 2'in yeni özelliklerini kullanırken kodunuzda bazı sürüm uyarlamalı denetimler gerektirir. Windows 10, sürüm 1903'ün hedef ve en düşük sürüm olarak ayarlanmasının ekran görüntüsü
    Hedef ve en düşük sürüm olarak Windows 10, sürüm 1903'ün ayarlanması

    Önemli

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

Şablon, standartlara uyumlu herhangi bir C++17 derleyicisini destekleyen Windows Çalışma Zamanı API'lerinin C++17 dil projeksiyonu olan C++/WinRT kullanarak bir proje oluşturur. Projede, kullanıcıdan 2 metre uzakta yerleştirilen dünya kilitli bir küp oluşturma gösterilmektedir. Kullanıcı, küpü kullanıcının bakışında belirtilen farklı bir konuma yerleştirmek için kumandadaki bir düğmeye havadan dokunabilir veya basabilir. Herhangi bir karma gerçeklik uygulaması oluşturmak için bu projeyi değiştirebilirsiniz.

SharpDX'i temel alan Visual C# holografik proje şablonunu kullanarak da yeni bir proje oluşturabilirsiniz. Holografik C# projeniz Windows Holographic uygulama şablonundan başlamadıysa, ms.fxcompile.targets dosyasını bir Windows Mixed Reality C# şablon projesinden kopyalamanız ve projenize eklediğiniz HLSL dosyalarını derlemek için.csproj dosyanıza aktarmanız gerekir. Visual Studio'ya Windows Mixed Reality uygulama şablonları uzantısında bir Direct3D 12 şablonu da sağlanır.

Örneği derleme ve HoloLens'inize dağıtma, çevreleyici cihazın ekli olduğu bilgisayar veya öykünücü hakkında bilgi için Visual Studio'yu kullanarak dağıtma ve hata ayıklama makalesini gözden geçirin.

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

UWP uygulaması giriş noktası

Holografik UWP uygulamanız AppView.cpp dosyasındaki wWinMain işlevinde başlar. wWinMain işlevi uygulamanın IFrameworkView'unu oluşturur ve CoreApplication'ı onunla başlatır.

AppView.cpp dosyasından:

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

Bu noktadan sonra AppView sınıfı Windows temel giriş olayları, CoreWindow olayları ve mesajlaşma vb. ile etkileşimi işler. Ayrıca uygulamanız tarafından kullanılan HolographicSpace'i de oluşturur.

Win32 projesi oluşturma

Win32 holografik projesi oluşturmaya başlamanın en kolay yolu BasicHologram Win32 örneğini uyarlamaktır.

Bu Win32 örneği, standartlara uyumlu C++17 derleyicilerini destekleyen Windows Çalışma Zamanı API'lerinin C++17 dil projeksiyonu olan C++/WinRT kullanır. Projede, kullanıcıdan 2 metre uzakta yerleştirilen dünya kilitli bir küp oluşturma gösterilmektedir. Kullanıcı, küpü kullanıcının bakışı tarafından belirtilen farklı bir konuma yerleştirmek için denetleyicideki bir düğmeye basabilir. Herhangi bir karma gerçeklik uygulaması oluşturmak için bu projeyi değiştirebilirsiniz.

Win32 uygulama giriş noktası

Holografik Win32 uygulamanız AppMain.cpp dosyasındaki 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 dosyasından:

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 sonra 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'i de oluşturur.

Holografik içerik oluşturma

Projenin İçerik klasörü holografik alanda hologramları işlemek için sınıflar içerir. Şablondaki varsayılan hologram, kullanıcıdan 2 metre uzağa yerleştirilmiş dönen bir küpdür. Bu küpü çizmek, şu temel yöntemleri içeren SpinningCubeRenderer.cpp dosyasında uygulanır:

Yöntem Açıklama
CreateDeviceDependentResources Gölgelendiricileri yükler ve küp örgüsünü oluşturur.
PositionHologram Hologramı sağlanan SpatialPointerPose tarafından belirtilen konuma yerleştirir.
Update Küpü döndürür ve model matrisini ayarlar.
Render Köşe ve piksel gölgelendiricilerini 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ştirilmemiş olarak bırakan bir geçiş.
PixelShader.hlsl Renk verilerinden geçer. Renk verileri ilişkilendirilir ve tarama adımında bir piksele atanır.
VertexShader.hlsl GPU'da köşe işleme yapmak için basit gölgelendirici.
VPRTVertexShader.hlsl GPU'da köşe işlemesi yapmak için basit gölgelendirici, Windows Mixed Reality stereo işleme için iyileştirilmiştir.

VertexShaderShared.hlslve VPRTVertexShader.hlslarasında VertexShader.hlsl paylaşılan ortak kodu içerir.

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

Gölgelendiriciler proje oluşturulduğunda derlenir ve SpinningCubeRenderer::CreateDeviceDependentResources yöntemine yüklenir.

Hologramlarınızla etkileşim kurma

Kullanıcı girişi, SpatialInteractionManager örneğini alan ve SourcePressed olayına abone olan SpatialInputHandler sınıfında işlenir. Bu, hava dokunma hareketini ve diğer uzamsal giriş olaylarını algılamayı sağlar.

Holografik içeriği güncelleştirme

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

içindeki AppMain.cppRender yöntemi HolographicFrame'i alır ve geçerli uygulamaya ve uzamsal konumlandırma durumuna göre her holografik kameraya geçerli çerçeveyi işler.

Notlar

Windows Mixed Reality uygulama şablonu artık Spectre azaltma bayrağı etkinleştirilmiş (/Qspectre) derlemeyi destekliyor. Spectre azaltma etkinleştirilmiş bir yapılandırma derlemeden önce Microsoft Visual C++ (MSVC) çalışma zamanı kitaplıklarının Spectre ile azaltılmış sürümünü yüklediğinizden emin olun. Spectre ile azaltılmış C++ kitaplıklarını yüklemek için Visual Studio Yükleyicisi başlatın ve Değiştir'i seçin. Tek tek bileşenler'e gidin ve "spectre" araması yapın. Spectre ile azaltılmış kodu derlemeniz gereken hedef platformlara ve MSVC sürümüne karşılık gelen kutuları seçin ve yüklemeyi başlatmak için Değiştir'e tıklayın.

Ayrıca bkz.