XR_ANDROID_geospatial_anchor
Name String
XR_ANDROID_geospatial_anchor
ประเภทส่วนขยาย
ส่วนขยายอินสแตนซ์
หมายเลขต่อที่ลงทะเบียน
798
การแก้ไข
1
สถานะการให้สัตยาบัน
ยังไม่ให้สัตยาบัน
การขึ้นต่อกันของส่วนขยายและเวอร์ชัน
XR_ANDROID_geospatial
และ
XR_EXT_future
และ
XR_EXT_spatial_entity
และ
XR_EXT_spatial_anchor
วันที่แก้ไขล่าสุด
2025-10-30
สถานะ IP
ไม่มีการอ้างสิทธิ์ใน IP ที่ทราบ
ผู้เขียน
John Ullman, Google
Ben King, Google
Nihav Jain, Google
Jared Finder, Google
ภาพรวม
ส่วนขยายนี้มีสมอเชิงพื้นที่และสมอบนพื้นผิวที่สร้างขึ้นจากส่วนขยายภูมิสารสนเทศเชิงพื้นที่พื้นฐาน Anchor ภูมิสารสนเทศคือ Anchor ที่วางตำแหน่งในพื้นที่สัมพัทธ์กับโลกที่ละติจูด ลองจิจูด และระดับความสูงที่กำหนด Surface Anchor คือ Anchor ที่สัมพันธ์กับโลกซึ่งวางไว้ที่ละติจูด ลองจิจูด และระดับความสูงที่กำหนดซึ่งสัมพันธ์กับพื้นผิวตามที่ Visual Positioning Service ทราบ เมื่อความแม่นยำของตำแหน่งรันไทม์ที่สัมพันธ์กับโลกดีขึ้น ท่าทางของ Anchor จะปรับตาม
ความสามารถของระบบสำหรับ Anchor เชิงพื้นที่
โครงสร้าง XrSystemGeospatialAnchorPropertiesANDROID มีคำจำกัดความดังนี้
typedef struct XrSystemGeospatialAnchorPropertiesANDROID {
XrStructureType type;
void* next;
uint32_t maxSurfaceAnchorCount;
} XrSystemGeospatialAnchorPropertiesANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้าง ไม่มีการกำหนดโครงสร้างดังกล่าวใน OpenXR หลักหรือส่วนขยายนี้maxSurfaceAnchorCountคือuint32_tที่ระบุจำนวนสูงสุดของแองเคอร์พื้นผิวที่สร้างได้
แอปพลิเคชันสามารถตรวจสอบความสามารถของสมอเชิงพื้นที่ของระบบได้โดยการเชื่อมต่อโครงสร้าง XrSystemGeospatialAnchorPropertiesANDROID กับ XrSystemProperties เมื่อเรียกใช้ xrGetSystemProperties
หาก XrSystemGeospatialPropertiesANDROID :: supportsGeospatial เป็น XR_TRUE แสดงว่า maxSurfaceAnchorCount ระบุจำนวนสูงสุดของ Anchor พื้นผิวที่รันไทม์รองรับ ในกรณีนี้ ขีดจำกัดต้องมากกว่า 0
หาก XrSystemGeospatialPropertiesANDROID :: supportsGeospatial ไม่ใช่ XR_TRUE maxSurfaceAnchorCount ต้องเป็น 0
การใช้งานที่ถูกต้อง (โดยนัย)
- คุณต้องเปิดใช้ส่วนขยาย
XR_ANDROID_geospatial_anchorก่อนจึงจะใช้ XrSystemGeospatialAnchorPropertiesANDROID ได้ -
typeต้องเป็นXR_TYPE_SYSTEM_GEOSPATIAL_ANCHOR_PROPERTIES_ANDROID -
nextต้องเป็นNULLหรือ Pointer ที่ถูกต้องไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง
การติดตามเครื่องบินสำหรับสมอ
โครงสร้าง XrGeospatialTrackerAnchorTrackingInfoANDROID มีคำจำกัดความดังนี้
typedef struct XrGeospatialTrackerAnchorTrackingInfoANDROID {
XrStructureType type;
const void* next;
XrBool32 shouldTrackPlanes;
} XrGeospatialTrackerAnchorTrackingInfoANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้างshouldTrackPlanesคือXrBool32ที่ระบุว่าเครื่องมือติดตามเชิงพื้นที่จะติดตามเครื่องบินเพื่อปรับปรุงการวางตำแหน่งของ Anchor ที่ล็อกกับพื้นผิวหรือไม่
คุณเปิดใช้การติดตามระนาบเพื่อปรับปรุงการวางตำแหน่งของ Anchor ที่ล็อกพื้นผิวได้
หากแอปพลิเคชันต้องการเปิดใช้การติดตามระนาบเพื่อปรับปรุงท่าทางของ Anchor พื้นผิว แอปสามารถเชื่อมโยงโครงสร้าง XrGeospatialTrackerAnchorTrackingInfoANDROID กับ XrGeospatialTrackerCreateInfoANDROID เมื่อเรียกใช้ xrCreateGeospatialTrackerANDROID
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_geospatial_anchorก่อนจึงจะใช้ XrGeospatialTrackerAnchorTrackingInfoANDROID ได้ -
typeต้องเป็นXR_TYPE_GEOSPATIAL_TRACKER_ANCHOR_TRACKING_INFO_ANDROID -
nextต้องเป็นNULLหรือ Pointer ที่ถูกต้องไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง
สมอยึดภูมิสารสนเทศ
ฟังก์ชัน xrCreateGeospatialAnchorANDROID มีคำจำกัดความดังนี้
XrResult xrCreateGeospatialAnchorANDROID(
XrSpatialContextEXT spatialContext,
const XrGeospatialAnchorCreateInfoANDROID* createInfo,
XrSpatialEntityIdEXT* anchorEntityId);
คำอธิบายพารามิเตอร์
spatialContextคือ XrSpatialContextEXT ที่ใช้สร้าง Anchor ต้องกำหนดค่าบริบทสำหรับXR_SPATIAL_CAPABILITY_ANCHOR_EXTมิเช่นนั้นรันไทม์ต้องแสดงผลXR_ERROR_VALIDATION_FAILUREcreateInfoคือตัวชี้ไปยัง XrGeospatialAnchorCreateInfoANDROID ที่มีพารามิเตอร์การสร้าง AnchoranchorEntityIdคือ Pointer ไปยังXrSpatialEntityIdEXTซึ่งจะแสดงรหัสเอนทิตีของ Anchor
หาก XrGeospatialTrackerANDROID ที่ระบุใน XrGeospatialAnchorCreateInfoANDROID :: geospatialTracker ไม่อยู่ในสถานะ XR_GEOSPATIAL_TRACKER_STATE_RUNNING_ANDROID รันไทม์ต้องแสดงผล XR_ERROR_GEOSPATIAL_TRACKER_NOT_RUNNING_ANDROID
การใช้งานที่ถูกต้อง (โดยนัย)
- คุณต้องเปิดใช้ส่วนขยาย
XR_ANDROID_geospatial_anchorก่อนที่จะเรียกใช้ xrCreateGeospatialAnchorANDROID -
spatialContextต้องเป็นแฮนเดิล XrSpatialContextEXT ที่ถูกต้อง -
createInfoต้องเป็นตัวชี้ไปยังโครงสร้าง XrGeospatialAnchorCreateInfoANDROID ที่ถูกต้อง -
anchorEntityIdต้องเป็นตัวชี้ไปยังค่าXrSpatialEntityIdEXT
รหัสการคืนสินค้า
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_GEOSPATIAL_COORDINATES_INVALID_ANDROIDXR_ERROR_GEOSPATIAL_TRACKER_NOT_RUNNING_ANDROIDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
โครงสร้าง XrGeospatialAnchorCreateInfoANDROID มีคำจำกัดความดังนี้
typedef struct XrGeospatialAnchorCreateInfoANDROID {
XrStructureType type;
const void* next;
XrGeospatialTrackerANDROID geospatialTracker;
XrGeospatialPoseANDROID geospatialPose;
} XrGeospatialAnchorCreateInfoANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้างgeospatialTrackerคือ XrGeospatialTrackerANDROID ที่ใช้สร้าง AnchorgeospatialPoseคือตัวชี้ไปยัง XrGeospatialPoseANDROID ที่กำหนดตำแหน่งและการวางแนวของ Anchor
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_geospatial_anchorก่อนจึงจะใช้ XrGeospatialAnchorCreateInfoANDROID ได้ -
typeต้องเป็นXR_TYPE_GEOSPATIAL_ANCHOR_CREATE_INFO_ANDROID -
nextต้องเป็นNULLหรือ Pointer ที่ถูกต้องไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง -
geospatialTrackerต้องเป็นแฮนเดิล XrGeospatialTrackerANDROID ที่ถูกต้อง -
geospatialPoseต้องเป็นโครงสร้าง XrGeospatialPoseANDROID ที่ถูกต้อง
สมอยึดพื้นผิว
Anchor พื้นผิวคือ Anchor ที่วางไว้เทียบกับพื้นผิว เช่น ภูมิประเทศหรือหลังคา
การแจงนับ XrSurfaceAnchorTypeANDROID มีการกำหนดไว้ดังนี้
typedef enum XrSurfaceAnchorTypeANDROID {
XR_SURFACE_ANCHOR_TYPE_TERRAIN_ANDROID = 1,
XR_SURFACE_ANCHOR_TYPE_ROOFTOP_ANDROID = 2,
XR_SURFACE_ANCHOR_TYPE_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrSurfaceAnchorTypeANDROID;
การแจงนับ XrSurfaceAnchorTypeANDROID จะระบุประเภทพื้นผิวที่ Anchor สัมพันธ์ด้วย
ตัวแจงนับมีค่าดังนี้
คำอธิบาย Enum
XR_SURFACE_ANCHOR_TYPE_TERRAIN_ANDROID
ประเภทของสมอที่วางเทียบกับพื้น
XR_SURFACE_ANCHOR_TYPE_ROOFTOP_ANDROID
ประเภทของจุดยึดที่วางเทียบกับดาดฟ้าหรือพื้นดินในกรณีที่ไม่มีอาคาร
ฟังก์ชัน xrCreateSurfaceAnchorAsyncANDROID มีคำจำกัดความดังนี้
XrResult xrCreateSurfaceAnchorAsyncANDROID(
XrSpatialContextEXT spatialContext,
const XrSurfaceAnchorCreateInfoANDROID* createInfo,
XrFutureEXT* future);
คำอธิบายพารามิเตอร์
spatialContextคือ XrSpatialContextEXT ที่ใช้สร้าง AnchorcreateInfoเป็น Pointer ไปยัง XrSurfaceAnchorCreateInfoANDROID ที่มีพารามิเตอร์การสร้าง Anchorfutureเป็นตัวชี้ไปยังXrFutureEXTซึ่งจะเก็บผลลัพธ์ของการดำเนินการแบบอะซิงโครนัส
ฟังก์ชัน xrCreateSurfaceAnchorAsyncANDROID จะเริ่มการดำเนินการแบบไม่พร้อมกันเพื่อสร้าง Anchor พื้นผิว ซึ่งต่างจากสมอเชิงพื้นที่มาตรฐาน รันไทม์อาจดึงข้อมูลภูมิประเทศเพื่อกำหนดระดับความสูงที่ถูกต้อง รันไทม์ต้องแสดง XR_ERROR_LIMIT_REACHED หากแอปพลิเคชันพยายามสร้าง Surface Anchor มากกว่า XrSystemGeospatialAnchorPropertiesANDROID :: maxSurfaceAnchorCount รายการในครั้งเดียว หาก XrGeospatialTrackerANDROID ที่ระบุใน XrSurfaceAnchorCreateInfoANDROID :: geospatialTracker ไม่อยู่ในสถานะ XR_GEOSPATIAL_TRACKER_STATE_RUNNING_ANDROID รันไทม์ต้องแสดงผล XR_ERROR_GEOSPATIAL_TRACKER_NOT_RUNNING_ANDROID การดำเนินการอาจล้มเหลวแบบไม่พร้อมกันโดยมีผลลัพธ์เป็น XR_ERROR_SURFACE_ANCHOR_LOCATION_UNSUPPORTED_ANDROID หากไม่มีข้อมูลพื้นผิวสำหรับสถานที่ตั้งที่ระบุ รันไทม์ต้องแสดงผล XR_ERROR_VALIDATION_FAILURE หากไม่ได้กำหนดค่า XR_SPATIAL_CAPABILITY_ANCHOR_EXT สำหรับ spatialContext
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_geospatial_anchorก่อนที่จะเรียกใช้ xrCreateSurfaceAnchorAsyncANDROID -
spatialContextต้องเป็นแฮนเดิล XrSpatialContextEXT ที่ถูกต้อง -
createInfoต้องเป็นตัวชี้ไปยังโครงสร้าง XrSurfaceAnchorCreateInfoANDROID ที่ถูกต้อง -
futureต้องเป็นตัวชี้ไปยังค่าXrFutureEXT
รหัสการคืนสินค้า
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_GEOSPATIAL_COORDINATES_INVALID_ANDROIDXR_ERROR_GEOSPATIAL_TRACKER_NOT_RUNNING_ANDROIDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
โครงสร้าง XrSurfaceAnchorCreateInfoANDROID มีคำจำกัดความดังนี้
typedef struct XrSurfaceAnchorCreateInfoANDROID {
XrStructureType type;
const void* next;
XrGeospatialTrackerANDROID geospatialTracker;
XrSurfaceAnchorTypeANDROID surfaceAnchorType;
XrQuaternionf eastUpSouthOrientation;
double latitude;
double longitude;
double altitudeRelativeToSurface;
} XrSurfaceAnchorCreateInfoANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้างgeospatialTrackerคือ XrGeospatialTrackerANDROID ที่จะใช้surfaceAnchorTypeคือ XrSurfaceAnchorTypeANDROID สำหรับ AnchoreastUpSouthOrientationคือการวางแนวเทียบกับระบบพิกัดที่ +X=ตะวันออก, +Y=ขึ้น และ +Z=ใต้latitudeคือละติจูดในหน่วยองศา ซึ่งอยู่ระหว่าง -89.9 ถึง +89.9longitudeคือลองจิจูดในหน่วยองศา ซึ่งอยู่ระหว่าง -180 ถึง +180altitudeRelativeToSurfaceคือระดับความสูงเป็นเมตรเทียบกับพื้นผิวที่ระบุโดยsurfaceAnchorType
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_geospatial_anchorก่อนจึงจะใช้ XrSurfaceAnchorCreateInfoANDROID ได้ -
typeต้องเป็นXR_TYPE_SURFACE_ANCHOR_CREATE_INFO_ANDROID -
nextต้องเป็นNULLหรือ Pointer ที่ถูกต้องไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง -
geospatialTrackerต้องเป็นแฮนเดิล XrGeospatialTrackerANDROID ที่ถูกต้อง -
surfaceAnchorTypeต้องเป็นค่า XrSurfaceAnchorTypeANDROID ที่ถูกต้อง -
latitudeต้องเป็นค่าdoubleที่ถูกต้อง -
longitudeต้องเป็นค่าdoubleที่ถูกต้อง -
altitudeRelativeToSurfaceต้องเป็นค่าdoubleที่ถูกต้อง
ฟังก์ชัน xrCreateSurfaceAnchorCompleteANDROID มีคำจำกัดความดังนี้
XrResult xrCreateSurfaceAnchorCompleteANDROID(
XrSpatialContextEXT spatialContext,
XrFutureEXT future,
XrSurfaceAnchorCreateCompletionANDROID* completion);
คำอธิบายพารามิเตอร์
spatialContextคือ XrSpatialContextEXT ที่ใช้ในการสร้างfutureคือXrFutureEXTที่ส่งคืนโดย xrCreateSurfaceAnchorAsyncANDROIDcompletionเป็น Pointer ไปยัง XrSurfaceAnchorCreateCompletionANDROID ที่รับผลลัพธ์
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_geospatial_anchorก่อนที่จะเรียกใช้ xrCreateSurfaceAnchorCompleteANDROID -
spatialContextต้องเป็นแฮนเดิล XrSpatialContextEXT ที่ถูกต้อง -
completionต้องเป็น Pointer ไปยังโครงสร้าง XrSurfaceAnchorCreateCompletionANDROID
รหัสการคืนสินค้า
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_FUTURE_INVALID_EXTXR_ERROR_FUTURE_PENDING_EXTXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
โครงสร้าง XrSurfaceAnchorCreateCompletionANDROID จะเก็บผลลัพธ์ของการสร้างสมอพื้นผิวแบบอะซิงโครนัส
typedef struct XrSurfaceAnchorCreateCompletionANDROID {
XrStructureType type;
void* next;
XrResult futureResult;
XrSpatialEntityIdEXT anchorEntityId;
} XrSurfaceAnchorCreateCompletionANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้างfutureResultคือ XrResult ของการดำเนินการสร้าง หากfutureResultเป็นXR_ERROR_GEOSPATIAL_CLOUD_AUTH_FAILED_ANDROIDโครงสร้างในเชนnextอาจให้ข้อมูลเพิ่มเติมเกี่ยวกับความล้มเหลวanchorEntityIdคือXrSpatialEntityIdEXTของ Anchor ที่สร้างขึ้น หรือ XR_NULL_SPATIAL_ENTITY_ID_EXT หากfutureResultไม่ใช่XR_SUCCESS
รหัสการแสดงผลในอนาคต
ค่า futureResult
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_RUNTIME_FAILUREXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_LIMIT_REACHEDXR_ERROR_GEOSPATIAL_TRACKER_NOT_RUNNING_ANDROIDXR_ERROR_SURFACE_ANCHOR_LOCATION_UNSUPPORTED_ANDROIDXR_ERROR_GEOSPATIAL_CLOUD_AUTH_FAILED_ANDROID
การใช้งานที่ถูกต้อง (โดยนัย)
- คุณต้องเปิดใช้ส่วนขยาย
XR_ANDROID_geospatial_anchorก่อนจึงจะใช้ XrSurfaceAnchorCreateCompletionANDROID ได้ -
typeต้องเป็นXR_TYPE_SURFACE_ANCHOR_CREATE_COMPLETION_ANDROID -
nextต้องเป็นNULLหรือ Pointer ที่ถูกต้องไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง -
futureResultต้องเป็นค่า XrResult ที่ถูกต้อง
ตัวอย่าง
สร้าง Anchor ภูมิประเทศ
PFN_xrCreateSpatialContextAsyncEXT xrCreateSpatialContextAsyncEXT;
PFN_xrCreateSpatialContextCompleteEXT xrCreateSpatialContextCompleteEXT;
PFN_xrCreateSurfaceAnchorAsyncANDROID xrCreateSurfaceAnchorAsyncANDROID;
PFN_xrPollFutureEXT xrPollFutureEXT;
PFN_xrCreateSurfaceAnchorCompleteANDROID xrCreateSurfaceAnchorCompleteANDROID;
XrInstance instance;
XrSession session;
XrGeospatialTrackerANDROID geospatialTracker;
// Create a spatial context
XrSpatialContextEXT spatialContext{};
{
std::vector<XrSpatialComponentTypeEXT> enabledComponents = {
XR_SPATIAL_COMPONENT_TYPE_ANCHOR_EXT,
};
XrSpatialCapabilityConfigurationAnchorEXT
anchorConfig{XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_ANCHOR_EXT};
anchorConfig.capability = XR_SPATIAL_CAPABILITY_ANCHOR_EXT;
anchorConfig.enabledComponentCount = enabledComponents.size();
anchorConfig.enabledComponents = enabledComponents.data();
std::array<XrSpatialCapabilityConfigurationBaseHeaderEXT*, 1> capabilityConfigs = {
reinterpret_cast<XrSpatialCapabilityConfigurationBaseHeaderEXT*>(&anchorConfig),
};
XrSpatialContextCreateInfoEXT spatialContextCreateInfo{XR_TYPE_SPATIAL_CONTEXT_CREATE_INFO_EXT};
spatialContextCreateInfo.capabilityConfigCount = capabilityConfigs.size();
spatialContextCreateInfo.capabilityConfigs = capabilityConfigs.data();
XrFutureEXT createContextFuture;
CHK_XR(xrCreateSpatialContextAsyncEXT(session, &spatialContextCreateInfo, &createContextFuture));
// ... wait until future is ready ...
XrCreateSpatialContextCompletionEXT contextCompletion{XR_TYPE_CREATE_SPATIAL_CONTEXT_COMPLETION_EXT};
CHK_XR(xrCreateSpatialContextCompleteEXT(session, createContextFuture, &contextCompletion));
if (contextCompletion.futureResult != XR_SUCCESS) {
return;
}
spatialContext = contextCompletion.spatialContext;
}
XrSurfaceAnchorCreateInfoANDROID anchorCreateInfo{
XR_TYPE_SURFACE_ANCHOR_CREATE_INFO_ANDROID};
anchorCreateInfo.surfaceAnchorType = XR_SURFACE_ANCHOR_TYPE_TERRAIN_ANDROID;
anchorCreateInfo.eastUpSouthOrientation = {0, 0, 0, 1};
anchorCreateInfo.latitude = 37.7749;
anchorCreateInfo.longitude = -122.4194;
anchorCreateInfo.altitudeRelativeToSurface = 0;
anchorCreateInfo.geospatialTracker = geospatialTracker;
XrFutureEXT anchorFuture = XR_NULL_FUTURE_EXT;
CHK_XR(xrCreateSurfaceAnchorAsyncANDROID(spatialContext, &anchorCreateInfo, &anchorFuture));
XrFuturePollInfoEXT anchorPollInfo{XR_TYPE_FUTURE_POLL_INFO_EXT};
XrFuturePollResultEXT anchorPollResult{XR_TYPE_FUTURE_POLL_RESULT_EXT};
anchorPollInfo.future = anchorFuture;
anchorPollResult.state = XR_FUTURE_STATE_PENDING_EXT;
while (anchorPollResult.state == XR_FUTURE_STATE_PENDING_EXT) {
// Do in render loop/state loop.
CHK_XR(xrPollFutureEXT(instance, &anchorPollInfo, &anchorPollResult));
}
XrSurfaceAnchorCreateCompletionANDROID anchorCompletion{
XR_TYPE_SURFACE_ANCHOR_CREATE_COMPLETION_ANDROID};
CHK_XR(xrCreateSurfaceAnchorCompleteANDROID(spatialContext, anchorFuture, &anchorCompletion));
if (anchorCompletion.futureResult == XR_SUCCESS) {
// Use completion.anchorEntityId.
XrSpatialEntityIdEXT anchorId = anchorCompletion.anchorEntityId;
// Query in UpdateSnapshot.
}
คำสั่งใหม่
- xrCreateGeospatialAnchorANDROID
- xrCreateSurfaceAnchorAsyncANDROID
- xrCreateSurfaceAnchorCompleteANDROID
โครงสร้างใหม่
- XrGeospatialAnchorCreateInfoANDROID
- XrSurfaceAnchorCreateCompletionANDROID
- XrSurfaceAnchorCreateInfoANDROID
การขยาย XrGeospatialTrackerCreateInfoANDROID :
การขยาย XrSystemProperties :
Enum ใหม่
ค่าคงที่ Enum ใหม่
XR_ANDROID_GEOSPATIAL_ANCHOR_EXTENSION_NAMEXR_ANDROID_geospatial_anchor_SPEC_VERSIONการขยาย XrResult :
XR_ERROR_SURFACE_ANCHOR_LOCATION_UNSUPPORTED_ANDROID
การขยาย XrStructureType :
XR_TYPE_GEOSPATIAL_ANCHOR_CREATE_INFO_ANDROIDXR_TYPE_GEOSPATIAL_TRACKER_ANCHOR_TRACKING_INFO_ANDROIDXR_TYPE_SURFACE_ANCHOR_CREATE_COMPLETION_ANDROIDXR_TYPE_SURFACE_ANCHOR_CREATE_INFO_ANDROIDXR_TYPE_SYSTEM_GEOSPATIAL_ANCHOR_PROPERTIES_ANDROID
ปัญหา
ประวัติเวอร์ชัน
การแก้ไขครั้งที่ 1, 2025-10-30 (Ben King)
- ฉบับร่างเริ่มต้น