docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Extending AR Foundation

    Due to platform-specific implementation differences between provider plug-ins, AR Foundation may not expose the entire contents of a platform SDK via C#. Instead, AR Foundation provides a native pointer to access platform-specific functionality and data when applicable. For example, the XRSessionSubsystem has a nativePtr property.

    Each provider plug-in defines what each native pointer points to. In general, a pointer points to a struct whose first member is an int that contains a version number followed by the raw pointer.

    In C, the XRSessionSubsystem.nativePtr might point to a struct like this:

    typedef struct UnityXRNativeSessionPtr
    {
        int version;
        void* session;
    } UnityXRNativeSessionPtr;
    

    Structure packing and alignment rules vary by platform, so the void* session pointer isn't necessarily at a 4 byte offset. On a 64-bit platform, for instance, the pointer might be offset by 8 bytes to ensure the pointer is on an 8 byte boundary.

    All trackables (such as planes, tracked images, or faces) provide a native pointer. You can use these pointers to access native data structures such as the native frame, session, plane, anchor, and so on.

    In This Article
    Back to top
    Copyright © 2025 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)