AR Foundation の拡張
プロバイダープラグイン間でプラットフォームごとの実装方法に違いがあるため、AR Foundation では、C# 経由でのプラットフォーム SDK のすべてのコンテンツの公開は行っていません。その代わり、AR Foundation は、ネイティブのポインターを提供して、プラットフォーム固有の機能やデータにアクセスできるようにしています (サポート対象の場合)。例えば、XRSessionSubsystem には nativePtr プロパティがあります。
各プロバイダープラグインによって、各ネイティブポインターの参照先が定義されます。通常、ポインターは、バージョン番号の int
を含む最初のメンバーにRaw ポインターが続く構造体を参照します。
C の場合は、XRSessionSubsystem.nativePtr
は以下のような構造体を参照します。
typedef struct UnityXRNativeSessionPtr
{
int version;
void* session;
} UnityXRNativeSessionPtr;
構造体のパッキングや整合のルールはプラットフォームごとに異なるため、void* session
ポインターは、4 バイトオフセットとは限りません。例えば 64 ビットのプラットフォームでは、ポインターは、8 バイト境界にするため、8 バイトオフセットになる場合があります。
すべてのトラッカブル (平面、追跡対象画像、面) には、ネイティブポインターがあります。これらのポインターを使用して、ネイティブのフレーム、セッション、平面、アンカーなど、ネイティブのデータ構造体にアクセスできます。