SDK Sitemap
SDK Antarmuka statistik

Antarmuka PreInit SDK XR

Antarmuka ini memungkinkan Anda untuk mengkonfigurasi perangkat grafis sebelum dibuat. Kasus penggunaan umum termasuk memilih GPU tertentu dalam skenario multi-GPU, memungkinkan ekstensi grafis, dan memodifikasi pembuatan penyangga.

Overview

Penyedia Anda dapat mengekspor simbol asli XRSDKPreInit, yang disebut awal awal awalan runtime, sebelum pembuatan perangkat grafis. Ini harus mengisi struktur UnityXRPreInitProvider dengan titik masuk yang relevan untuk menyediakan mesin dengan informasi yang mungkin diperlukan selama awalisasi. Beberapa penyedia membutuhkan ini karena perangkat grafis diciptakan sebelum penyedia dapat menginisialisasi.

Discovery

Proses pembuatan proyek Unity membutuhkan nama perpustakaan penyedia Anda sebelum dapat memanggil XRSDKPreInit() pada startup mesin. Untuk melakukan ini, menerapkan antarmuka IXRLoaderPreInit.GetPreInitLibraryName pada XRLoader Anda:

public string GetPreInitLibraryName(BuildTarget buildTarget, BuildTargetGroup buildTargetGroup)
{
    return "XRSDKMyProviderLibraryName";
}

Ketika Unity memulai, menjalankan kode di atas untuk memuat perpustakaan. Kemudian, Unity membuka perpustakaan, mencari ekspor XRSDKPreInit, dan menyebutnya. Pada saat itu, XRSDKPreInit harus mendaftarkan UnityXRPreInitProvider.

Pendaftaran di XRSDKPreInit

Berikut ini contoh sederhana yang mendaftarkan semua callback yang dapat Anda gunakan untuk awalisasi mesin:

XRSDKPreInit(IUnityInterfaces * interfaces)
{
    IUnityXRPreInit* preInit = (IUnityXRPreInit*)interfaces->GetInterface(GetUnityInterfaceGUID<IUnityXRPreInit>());

    UnityXRPreInitProvider provider = { 0 };

    provider.userData = nullptr;
    provider.GetPreInitFlags = GetPreInitFlags;
    provider.GetGraphicsAdapterId = GetGraphicsAdapterId;
    provider.GetVulkanInstanceExtensions = GetVulkanInstanceExtensions;
    provider.GetVulkanDeviceExtensions = GetVulkanDeviceExtensions;

    preInit->RegisterPreInitProvider(&provider);
}

Mengatur panggilan apa pun yang tidak perlu Anda nullptr.


Callbacks

GetPreInitFlags

GetPreInitFlags mengembalikan bitfield 64-bit bendera. Bendera berikut saat ini terpapar:

  • kUnityXRPreInitFlagsEGLUsePBuffer - Pada platform EGL (Android, perangkat Oculus mandiri, dll.), EGL harus diinisialisasi menggunakan PBuffers.
  • kUnityXRPreInitFlagsEGLUseNoErrorContext - Pada platform EGL, EGL harus diinisialisasi dengan konteks NO_ERROR.

Penyedia tidak boleh mengatur bit yang tidak ditentukan, karena mereka mungkin digunakan untuk ekspansi masa depan.

GetGraphicsAdapterId

GetGraphicsAdapterId menetapkan adaptor grafis yang digunakan perangkat grafis runtime Unity untuk awalisasi API grafis. Misalnya, jika pengguna menghubungkan headset ke GPU yang berbeda dari perangkat tampilan utama pengguna, Unity mungkin perlu menginisialisasi API grafis yang secara eksplisit menargetkan GPU sekunder.

GetVulkanDeviceExtensions dan GetVulkanInstanceExtensions

GetVulkanDeviceExtensions dan GetVulkanInstanceExtensions digunakan jika penyedia membutuhkan Unity untuk meminisialisasikan Vulkan dengan ekstensi spesifik untuk perangkat dan instance. Ini sering digunakan untuk berbagi permukaan compositor. Keduanya kembali string ekstensi ruang yang dipisahkan.


Known issues

  • Saat ini, GetPreInitLibraryName hanya disebut pada XRLoader pertama di XRManager prefabJenis aset yang memungkinkan Anda untuk menyimpan GameObject lengkap dengan komponen dan properti. Prefab bertindak sebagai template dari mana Anda dapat membuat instance objek baru di tempat kejadian. More info
    Lihat di Glossary
    , jadi hanya Penyedia pertama dalam daftar dapat memberikan poin masuk PreInit pada runtime.
  • PreInit memerlukan pustaka asli untuk mengekspos titik masuk selama awalisasi mesin.
  • PreInit tidak berlaku untuk Editor pada saat ini.
SDK Sitemap
SDK Antarmuka statistik