XR_ANDROID_trackables_marker
Name String
XR_ANDROID_trackables_marker
ประเภทส่วนขยาย
ส่วนขยายอินสแตนซ์
หมายเลขต่อที่ลงทะเบียนไว้
708
การแก้ไข
1
สถานะการให้สัตยาบัน
ไม่ได้รับการให้สัตยาบัน
ทรัพยากร Dependency ของส่วนขยายและเวอร์ชัน
XR_ANDROID_trackables
สถานะการเลิกใช้งาน
- เลิกใช้งานโดยส่วนขยาย
XR_EXT_spatial_marker_tracking
วันที่แก้ไขล่าสุด
2025-07-23
สถานะ IP
ไม่มีการอ้างสิทธิ์ IP ที่ทราบ
ผู้เขียน
Christopher Doer, Google
Diego Tipaldi, Google
Levana Chen, Google
Jared Finder, Google
Spencer Quin, Google
Nihav Jain, Google
Ken Mackay, Google
Daniel Guttenberg, Qualcomm
ภาพรวม
ส่วนขยายนี้ช่วยให้สามารถติดตามมาร์กเกอร์จริง และช่วยให้แอปพลิเคชันแนบเนื้อหา XR กับมาร์กเกอร์จริงได้อย่างมีประสิทธิภาพ
ส่วนขยายรองรับประเภทเครื่องหมายที่รู้จักกันดี โดยเฉพาะ ArUco และ AprilTag ซึ่งช่วยให้รันไทม์รองรับการประมาณขนาดเครื่องหมาย (ไม่บังคับ)
สิทธิ์
แอปพลิเคชัน Android ต้องมีสิทธิ์ android.permission.SCENE_UNDERSTANDING_COARSE แสดงอยู่ในไฟล์ Manifest เนื่องจากส่วนขยายนี้ขึ้นอยู่กับ XR_ANDROID_trackables และแสดงเรขาคณิตของสภาพแวดล้อม สิทธิ์ android.permission.SCENE_UNDERSTANDING_COARSE ถือเป็นสิทธิ์ที่เป็นอันตราย กล่าวคือ แอปพลิเคชันต้องขอสิทธิ์อย่างชัดแจ้ง
(ระดับการป้องกัน: อันตราย)
ตรวจสอบความสามารถของระบบ
โครงสร้าง XrSystemMarkerTrackingPropertiesANDROID มีคำจำกัดความดังนี้
typedef struct XrSystemMarkerTrackingPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsMarkerTracking;
XrBool32 supportsMarkerSizeEstimation;
uint16_t maxMarkerCount;
} XrSystemMarkerTrackingPropertiesANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือตัวชี้ไปยังโครงสร้างถัดไปในเชนโครงสร้าง ไม่มีการกำหนดโครงสร้างดังกล่าวใน OpenXR หลักหรือส่วนขยายนี้ ดูรายละเอียดเพิ่มเติมเกี่ยวกับเชนโครงสร้างได้ที่โครงสร้างที่ขยาย ( XrSystemProperties)supportsMarkerTrackingคือXrBool32ที่ระบุว่าระบบปัจจุบันมีความสามารถในการติดตามเครื่องหมายหรือไม่supportsMarkerSizeEstimationคือXrBool32ที่ระบุว่าระบบปัจจุบันมีการประมาณขนาดเครื่องหมายหรือไม่maxMarkerCountคือจำนวนมาร์กเกอร์สูงสุดที่รันไทม์สามารถติดตามได้พร้อมกัน
แอปพลิเคชันสามารถตรวจสอบว่าระบบสามารถติดตามมาร์กเกอร์ได้หรือไม่โดยขยาย XrSystemProperties ด้วยโครงสร้าง XrSystemMarkerTrackingPropertiesANDROID เมื่อเรียกใช้ xrGetSystemProperties รันไทม์ต้องแสดงผล XR_ERROR_FEATURE_UNSUPPORTED สำหรับการสร้างเครื่องมือติดตามเครื่องหมายก็ต่อเมื่อ supportsMarkerTracking เป็น XR_FALSE
หากรันไทม์รองรับการติดตามเครื่องหมาย maxMarkerCount ต้องมีค่าอย่างน้อย 1
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_trackables_markerก่อนที่จะใช้ XrSystemMarkerTrackingPropertiesANDROID -
typeต้องเป็นXR_TYPE_SYSTEM_MARKER_TRACKING_PROPERTIES_ANDROID -
nextต้องเป็นNULLหรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปในเชนโครงสร้าง
เครื่องหมายติดตาม
ส่วนขยายนี้จะเพิ่ม XR_TRACKABLE_TYPE_MARKER_ANDROID ลงใน XrTrackableTypeANDROID
แอปพลิเคชันจะสร้าง XrTrackableTrackerANDROID โดยเรียกใช้ xrCreateTrackableTrackerANDROID และระบุ XR_TRACKABLE_TYPE_MARKER_ANDROID เป็นประเภทที่ติดตามได้ใน XrTrackableTrackerCreateInfoANDROID :: trackableType รวมถึงตั้งค่าการกำหนดค่าที่ถูกต้องโดยเพิ่ม XrTrackableMarkerConfigurationANDROID ลงในเชนถัดไปของ XrTrackableTrackerCreateInfoANDROID
รันไทม์ต้องแสดงผล XR_ERROR_FEATURE_UNSUPPORTED หาก XrTrackableTrackerCreateInfoANDROID :: trackableType เป็น XR_TRACKABLE_TYPE_MARKER_ANDROID และ XrSystemMarkerTrackingPropertiesANDROID :: supportsMarkerTracking แสดงผล XR_FALSE ผ่าน xrGetSystemProperties
โครงสร้าง XrTrackableMarkerConfigurationANDROID มีคำจำกัดความดังนี้
typedef struct XrTrackableMarkerConfigurationANDROID {
XrStructureType type;
void* next;
XrTrackableMarkerTrackingModeANDROID trackingMode;
uint32_t databaseCount;
const XrTrackableMarkerDatabaseANDROID* databases;
} XrTrackableMarkerConfigurationANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือตัวชี้ไปยังโครงสร้างถัดไปในเชนโครงสร้างtrackingModeคือ XrTrackableMarkerTrackingModeANDROID ที่ระบุโหมดที่ต้องการสำหรับการติดตามdatabaseCountคือuint32_tที่อธิบายจำนวนองค์ประกอบในอาร์เรย์databasesdatabasesเป็นตัวชี้ไปยังอาร์เรย์ของ XrTrackableMarkerDatabaseANDROID ซึ่งแต่ละรายการมีเครื่องหมายที่ต้องการจากพจนานุกรมที่กำหนดให้ติดตาม
แอปพลิเคชันต้องตั้งค่าการกำหนดค่าที่ถูกต้องโดยเพิ่ม XrTrackableMarkerConfigurationANDROID ลงในเชน XrTrackableTrackerCreateInfoANDROID :: next เมื่อเรียกใช้ xrCreateTrackableTrackerANDROID โดยตั้งค่า XrTrackableTrackerCreateInfoANDROID :: trackableType เป็น XR_TRACKABLE_TYPE_MARKER_ANDROID มิฉะนั้น หากมีการตั้งค่าประเภทเครื่องมือติดตามตามที่ระบุไว้ข้างต้น แต่ไม่มีโครงสร้างการกำหนดค่าหรือไม่ถูกต้อง รันไทม์ต้องแสดงผล XR_ERROR_VALIDATION_FAILURE
หากรันไทม์รองรับการประมาณขนาดมาร์กเกอร์ แอปพลิเคชันสามารถตั้งค่า XrTrackableMarkerDatabaseEntryANDROID :: edgeSize เป็น 0 ใน XrTrackableMarkerDatabaseANDROID :: entries เพื่อระบุการใช้การประมาณขนาด ไม่เช่นนั้น แอปพลิเคชันต้องตั้งค่า XrTrackableMarkerDatabaseEntryANDROID :: edgeSize เป็นค่าบวก หรือรันไทม์ต้องแสดงผล XR_ERROR_VALIDATION_FAILURE
รันไทม์ต้องกรองเอาต์พุตจาก xrGetAllTrackablesANDROID เพื่อให้ตรงกับ trackingMode และ XrTrackableMarkerDatabaseEntryANDROID :: edgeSize
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_trackables_markerก่อนใช้ XrTrackableMarkerConfigurationANDROID -
typeต้องเป็นXR_TYPE_TRACKABLE_MARKER_CONFIGURATION_ANDROID -
nextต้องเป็นNULLหรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปในเชนโครงสร้าง -
trackingModeต้องเป็นค่า XrTrackableMarkerTrackingModeANDROID ที่ถูกต้อง -
databasesต้องเป็นตัวชี้ไปยังอาร์เรย์ของโครงสร้าง XrTrackableMarkerDatabaseANDROID ที่ถูกต้องdatabaseCountรายการ - พารามิเตอร์
databaseCountต้องมากกว่า0
XrTrackableMarkerTrackingModeANDROID enum อธิบายโหมดการติดตามที่รองรับของมาร์กเกอร์
typedef enum XrTrackableMarkerTrackingModeANDROID {
XR_TRACKABLE_MARKER_TRACKING_MODE_DYNAMIC_ANDROID = 0,
XR_TRACKABLE_MARKER_TRACKING_MODE_STATIC_ANDROID = 1,
XR_TRACKABLE_MARKER_TRACKING_MODE_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrTrackableMarkerTrackingModeANDROID;
คำอธิบาย Enumerant
XR_TRACKABLE_MARKER_TRACKING_MODE_DYNAMIC_ANDROID— การติดตามเครื่องหมายแบบไดนามิก โหมดนี้มีความแม่นยำสูงสุดและใช้ได้กับเครื่องหมายที่เคลื่อนไหวและคงที่ แต่ก็ใช้พลังงานสูงสุดด้วยXR_TRACKABLE_MARKER_TRACKING_MODE_STATIC_ANDROID— การติดตามเครื่องหมายแบบคงที่ โหมดนี้มีประโยชน์เป็นหลักสำหรับเครื่องหมายที่ทราบว่าเป็นแบบคงที่ ซึ่งจะช่วยลดการใช้พลังงานเมื่อเทียบกับโหมดไดนามิก
โครงสร้าง XrTrackableMarkerDatabaseANDROID จะกำหนดพจนานุกรมและรหัสเครื่องหมายที่เกี่ยวข้องที่จะติดตาม
typedef struct XrTrackableMarkerDatabaseANDROID {
XrTrackableMarkerDictionaryANDROID dictionary;
uint32_t entryCount;
const XrTrackableMarkerDatabaseEntryANDROID* entries;
} XrTrackableMarkerDatabaseANDROID;
คำอธิบายสมาชิก
dictionaryคือ XrTrackableMarkerDictionaryANDROID ที่entriesทั้งหมดเป็นของentryCountคือ uint32_t ที่อธิบายจำนวนองค์ประกอบในอาร์เรย์entriesแอปพลิเคชันสามารถตั้งค่าentryCount0เพื่อติดตามเครื่องหมายทั้งหมดในdictionaryได้entriesเป็นตัวชี้ไปยังอาร์เรย์ของ XrTrackableMarkerDatabaseEntryANDROID ซึ่งแต่ละรายการมีการกำหนดค่าของเครื่องหมายที่จะติดตาม
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_trackables_markerก่อนใช้ XrTrackableMarkerDatabaseANDROID -
dictionaryต้องเป็นค่า XrTrackableMarkerDictionaryANDROID ที่ถูกต้อง - หาก
entryCountไม่ใช่0entriesต้องเป็นพอยเตอร์ไปยังอาร์เรย์ของโครงสร้างentryCountXrTrackableMarkerDatabaseEntryANDROID
enum XrTrackableMarkerDictionaryANDROID อธิบายพจนานุกรมมาร์กเกอร์ที่รองรับ
typedef enum XrTrackableMarkerDictionaryANDROID {
XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_4X4_50_ANDROID = 0,
XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_4X4_100_ANDROID = 1,
XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_4X4_250_ANDROID = 2,
XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_4X4_1000_ANDROID = 3,
XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_5X5_50_ANDROID = 4,
XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_5X5_100_ANDROID = 5,
XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_5X5_250_ANDROID = 6,
XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_5X5_1000_ANDROID = 7,
XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_6X6_50_ANDROID = 8,
XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_6X6_100_ANDROID = 9,
XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_6X6_250_ANDROID = 10,
XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_6X6_1000_ANDROID = 11,
XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_7X7_50_ANDROID = 12,
XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_7X7_100_ANDROID = 13,
XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_7X7_250_ANDROID = 14,
XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_7X7_1000_ANDROID = 15,
XR_TRACKABLE_MARKER_DICTIONARY_APRILTAG_16H5_ANDROID = 16,
XR_TRACKABLE_MARKER_DICTIONARY_APRILTAG_25H9_ANDROID = 17,
XR_TRACKABLE_MARKER_DICTIONARY_APRILTAG_36H10_ANDROID = 18,
XR_TRACKABLE_MARKER_DICTIONARY_APRILTAG_36H11_ANDROID = 19,
XR_TRACKABLE_MARKER_DICTIONARY_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrTrackableMarkerDictionaryANDROID;
โครงสร้าง XrTrackableMarkerDatabaseEntryANDROID จะกำหนดค่ารหัสเครื่องหมายเดียวของพจนานุกรม
typedef struct XrTrackableMarkerDatabaseEntryANDROID {
int32_t id;
float edgeSize;
} XrTrackableMarkerDatabaseEntryANDROID;
คำอธิบายสมาชิก
idคือรหัสเครื่องหมายตามที่ระบุไว้ในพจนานุกรมedgeSizeแสดงขนาดของขอบเครื่องหมายในหน่วยเมตร หากรันไทม์รองรับการประมาณขนาดมาร์กเกอร์ แอปพลิเคชันสามารถตั้งค่านี้เป็น 0 และระบบจะประมาณขนาดมาร์กเกอร์ทางออนไลน์ หากตั้งค่านี้เป็น 0 แต่รันไทม์ไม่รองรับการประมาณขนาดเครื่องหมาย รันไทม์ต้องแสดงผลXR_ERROR_VALIDATION_FAILURE
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_trackables_markerก่อนใช้ XrTrackableMarkerDatabaseEntryANDROID
รับเครื่องหมาย
ฟังก์ชัน xrGetTrackableMarkerANDROID มีคำจำกัดความดังนี้
XrResult xrGetTrackableMarkerANDROID(
XrTrackableTrackerANDROID tracker,
const XrTrackableGetInfoANDROID* getInfo,
XrTrackableMarkerANDROID* markerOutput);
คำอธิบายพารามิเตอร์
trackerคือ XrTrackableTrackerANDROID ที่จะค้นหาgetInfoคือ XrTrackableGetInfoANDROID ที่มีข้อมูลที่ใช้เพื่อรับเครื่องหมายที่ติดตามได้markerOutputคือตัวชี้ไปยังโครงสร้าง XrTrackableMarkerANDROID ที่ระบบจะแสดงผลมาร์กเกอร์ที่ติดตามได้
รันไทม์ต้องแสดงผล XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID หากประเภทที่ติดตามได้ของ XrTrackableANDROID ไม่ใช่ XR_TRACKABLE_TYPE_MARKER_ANDROID หรือหากประเภทที่ติดตามได้ของ XrTrackableTrackerANDROID ไม่ใช่ XR_TRACKABLE_TYPE_MARKER_ANDROID
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_trackables_markerก่อนเรียกใช้ xrGetTrackableMarkerANDROID -
trackerต้องเป็นแฮนเดิล XrTrackableTrackerANDROID ที่ถูกต้อง -
getInfoต้องเป็นตัวชี้ไปยังโครงสร้าง XrTrackableGetInfoANDROID ที่ถูกต้อง -
markerOutputต้องเป็นตัวชี้ไปยังโครงสร้าง XrTrackableMarkerANDROID
รหัสการคืนสินค้า
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROIDXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_TIME_INVALIDXR_ERROR_VALIDATION_FAILURE
โครงสร้าง XrTrackableMarkerANDROID มีคำจำกัดความดังนี้
typedef struct XrTrackableMarkerANDROID {
XrStructureType type;
void* next;
XrTrackingStateANDROID trackingState;
XrTime lastUpdatedTime;
XrTrackableMarkerDictionaryANDROID dictionary;
int32_t markerId;
XrPosef centerPose;
XrExtent2Df extents;
} XrTrackableMarkerANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือตัวชี้ไปยังโครงสร้างถัดไปในเชนโครงสร้าง ไม่มีการกำหนดโครงสร้างดังกล่าวใน OpenXR หลักหรือส่วนขยายนี้trackingStateคือ XrTrackingStateANDROID ของเครื่องหมายlastUpdatedTimeคือXrTimeของการอัปเดตเครื่องหมายครั้งล่าสุดdictionaryคือ XrTrackableMarkerDictionaryANDROID ของเครื่องหมายmarkerIdคือรหัสเครื่องหมายตามที่ระบุไว้ในพจนานุกรมcenterPoseคือ XrPosef ของมาร์กเกอร์ที่อยู่ใน XrTrackableGetInfoANDROID ::baseSpaceเครื่องหมายจะอยู่ในระนาบ XZ โดยที่ X ชี้ไปทางขวาของเครื่องหมาย และ Z ชี้ไปที่ด้านล่าง และ Y ออกมาจากเครื่องหมายเป็นค่าปกติextentsคือขนาด XrExtent2Df ของเครื่องหมาย ขอบเขตของกรอบล้อมรอบอยู่ที่จุดcenterPose+/- (extents/ 2)
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_trackables_markerก่อนใช้ XrTrackableMarkerANDROID -
typeต้องเป็นXR_TYPE_TRACKABLE_MARKER_ANDROID -
nextต้องเป็นNULLหรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปในเชนโครงสร้าง -
trackingStateต้องเป็นค่า XrTrackingStateANDROID ที่ถูกต้อง -
dictionaryต้องเป็นค่า XrTrackableMarkerDictionaryANDROID ที่ถูกต้อง
โค้ดตัวอย่างสำหรับการรับเครื่องหมายที่ติดตามได้
โค้ดตัวอย่างต่อไปนี้แสดงวิธีรับเครื่องหมายที่ติดตามได้
XrInstance instance; // previously initialized
XrSystemId systemId; // previously initialized
XrSession session; // previously initialized
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrGetSystemProperties xrGetSystemProperties; // previously initialized
PFN_xrCreateTrackableTrackerANDROID xrCreateTrackableTrackerANDROID; // previously initialized
PFN_xrGetAllTrackablesANDROID xrGetAllTrackablesANDROID; // previously initialized
PFN_xrGetTrackableMarkerANDROID xrGetTrackableMarkerANDROID; // previously initialized
PFN_xrDestroyTrackableTrackerANDROID xrDestroyTrackableTrackerANDROID; // previously initialized
XrTime updateTime; // Time used for the current frame's simulation update.
XrSpace appSpace; // Space created for XR_REFERENCE_SPACE_TYPE_LOCAL.
// Inspect system capability
XrSystemMarkerTrackingPropertiesANDROID markerProperty {
.type = XR_TYPE_SYSTEM_MARKER_TRACKING_PROPERTIES_ANDROID,
.next = nullptr,
};
XrSystemProperties systemProperties {
.type = XR_TYPE_SYSTEM_PROPERTIES,
.next = &markerProperty,
};
CHK_XR(xrGetSystemProperties(instance, systemId, &systemProperties));
if (!markerProperty.supportsMarkerTracking) {
// Marker tracking is not supported.
return;
}
// Create a trackable tracker for marker tracking.
// If the runtime does not support size estimation, configures marker edge size of 0.1m.
XrTrackableMarkerDatabaseEntryANDROID markerEntries {
.id = 0,
.edgeSize = markerProperty.supportsMarkerSizeEstimation ? 0.0f : 0.1f,
};
XrTrackableMarkerDatabaseANDROID markerDatabases {
.dictionary = XR_TRACKABLE_MARKER_DICTIONARY_ARUCO_4X4_50_ANDROID,
.entryCount = 1,
.entries = &markerEntries,
};
XrTrackableMarkerConfigurationANDROID configuration {
.type = XR_TYPE_TRACKABLE_MARKER_CONFIGURATION_ANDROID,
.next = nullptr,
.trackingMode = XR_TRACKABLE_MARKER_TRACKING_MODE_DYNAMIC_ANDROID,
.databaseCount = 1,
.databases = &markerDatabases,
};
XrTrackableTrackerCreateInfoANDROID createInfo {
.type = XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID,
.next = &configuration,
.trackableType = XR_TRACKABLE_TYPE_MARKER_ANDROID,
};
XrTrackableTrackerANDROID markerTracker;
auto res = xrCreateTrackableTrackerANDROID(session, &createInfo, &markerTracker);
if (res == XR_ERROR_PERMISSION_INSUFFICIENT) {
// Handle permission requests.
}
CHK_XR(res);
// Get markers.
std::vector<XrTrackableANDROID> trackables(markerProperty.maxMarkerCount);
std::vector<XrTrackableMarkerANDROID> markers(markerProperty.maxMarkerCount, {
.type = XR_TYPE_TRACKABLE_MARKER_ANDROID,
.next = nullptr,
});
uint32_t markerSize = 0;
CHK_XR(xrGetAllTrackablesANDROID(markerTracker, markerProperty.maxMarkerCount, &markerSize,
trackables.data()));
for (int i = 0; i < markerSize; i++) {
XrTrackableGetInfoANDROID getInfo {
.type = XR_TYPE_TRACKABLE_GET_INFO_ANDROID,
.next = nullptr,
.trackable = trackables[i],
.baseSpace = appSpace,
.time = updateTime,
};
CHK_XR(xrGetTrackableMarkerANDROID(markerTracker, &getInfo, &markers[i]));
// Handle markers.
}
// Release trackable tracker.
CHK_XR(xrDestroyTrackableTrackerANDROID(markerTracker));
คำสั่งใหม่
โครงสร้างใหม่
- XrTrackableMarkerANDROID
- XrTrackableMarkerDatabaseANDROID
- XrTrackableMarkerDatabaseEntryANDROID
การขยาย XrSystemProperties :
การขยาย XrTrackableTrackerCreateInfoANDROID :
Enum ใหม่
ค่าคงที่ Enum ใหม่
XR_ANDROID_TRACKABLES_MARKER_EXTENSION_NAMEXR_ANDROID_trackables_marker_SPEC_VERSIONการขยาย XrStructureType :
XR_TYPE_SYSTEM_MARKER_TRACKING_PROPERTIES_ANDROIDXR_TYPE_TRACKABLE_MARKER_ANDROIDXR_TYPE_TRACKABLE_MARKER_CONFIGURATION_ANDROID
การขยาย XrTrackableTypeANDROID :
XR_TRACKABLE_TYPE_MARKER_ANDROID
ปัญหา
ประวัติเวอร์ชัน
Revision 1, 2025-07-23 (Levana Chen)
- คำอธิบายส่วนขยายเริ่มต้น