XR_ANDROID_eye_tracking

Name String

XR_ANDROID_eye_tracking

ประเภทส่วนขยาย

ส่วนขยายอินสแตนซ์

หมายเลขต่อที่ลงทะเบียน

457

การแก้ไข

1

สถานะการให้สัตยาบัน

ยังไม่ให้สัตยาบัน

การขึ้นต่อกันของส่วนขยายและเวอร์ชัน

OpenXR 1.0

วันที่แก้ไขล่าสุด

2025-01-17

สถานะ IP

ไม่มีการอ้างสิทธิ์ใน IP ที่ทราบ

ผู้เขียน

Spencer Quin, Google
Jared Finder, Google
Levana Chen, Google
Kenny Vercaemer, Google
Prasanthi Gurumurthy, Google
Nihav Jain, Google

ภาพรวม

ส่วนขยายนี้ช่วยให้แอปพลิเคชันรับตำแหน่งและการวางแนวของดวงตาผู้ใช้ รวมถึงสถานะการติดตามดวงตาได้

ข้อมูลการติดตามดวงตาจะแสดงใน 2 โหมด ได้แก่ โหมดหยาบและโหมดละเอียด การติดตามแบบหยาบจะให้ค่าประมาณแบบหยาบของดวงตาผู้ใช้ ส่วนการติดตามแบบละเอียดจะให้ค่าประมาณที่แม่นยำกว่า การติดตามแบบหยาบมีไว้สำหรับแอปพลิเคชันที่ต้องการแสดงภาพพื้นฐานคล้ายอวตาร ส่วนการติดตามแบบละเอียดมีไว้สำหรับแอปพลิเคชันที่แม่นยำกว่า

สำหรับการโต้ตอบ ควรใช้ XR_EXT_eye_gaze_interaction

สิทธิ์

แอปพลิเคชัน Android ต้องมีสิทธิ์ android.permission.EYE_TRACKING_COARSE หรือ android.permission.EYE_TRACKING_FINE แสดงอยู่ในไฟล์ Manifest สิทธิ์เหล่านี้ถือเป็นสิทธิ์ที่เป็นอันตราย แอปพลิเคชันต้องขอสิทธิ์ขณะรันไทม์เพื่อใช้ฟังก์ชันต่อไปนี้

(ระดับการป้องกัน: อันตราย)

ตรวจสอบความสามารถของระบบ

โครงสร้าง XrSystemEyeTrackingPropertiesANDROID มีคำจำกัดความดังนี้

typedef struct XrSystemEyeTrackingPropertiesANDROID {
    XrStructureType    type;
    void*              next;
    XrBool32           supportsEyeTracking;
} XrSystemEyeTrackingPropertiesANDROID;

คำอธิบายสมาชิก

  • type คือ XrStructureType ของโครงสร้างนี้
  • next คือ NULL หรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้าง ไม่มีการกำหนดโครงสร้างดังกล่าวใน OpenXR หลักหรือส่วนขยายนี้
  • supportsEyeTracking คือ XrBool32 ที่ระบุว่าระบบปัจจุบันรองรับการติดตามดวงตาหรือไม่

แอปพลิเคชันสามารถตรวจสอบว่าระบบรองรับการติดตามดวงตาหรือไม่โดยขยาย XrSystemProperties ด้วยโครงสร้าง XrSystemEyeTrackingPropertiesANDROID เมื่อเรียกใช้ xrGetSystemProperties

หากรันไทม์แสดงผล XR_FALSE สำหรับ supportsEyeTracking รันไทม์ต้องแสดงผล XR_ERROR_FEATURE_UNSUPPORTED จาก xrCreateEyeTrackerANDROID

การใช้งานที่ถูกต้อง (โดยนัย)

การสร้างแฮนเดิลของอายแทร็กเกอร์

XR_DEFINE_HANDLE(XrEyeTrackerANDROID)

แฮนเดิล XrEyeTrackerANDROID แสดงถึงอายแทร็กเกอร์สำหรับการติดตามดวงตาและแมปตำแหน่งที่ผู้ใช้กำลังมองอย่างแม่นยำ

ข้อมูลการติดตามดวงตาเป็นข้อมูลส่วนบุคคลที่ละเอียดอ่อนและเชื่อมโยงอย่างใกล้ชิดกับความเป็นส่วนตัวและความสมบูรณ์ของบุคคล เราขอแนะนำอย่างยิ่งให้แอปพลิเคชันที่จัดเก็บหรือโอนข้อมูลการติดตามดวงตาขอการยอมรับที่ชัดเจนและเฉพาะเจาะจงจากผู้ใช้เสมอ

แอปพลิเคชันใช้แฮนเดิลนี้เพื่อเข้าถึงข้อมูลการติดตามดวงตาโดยใช้ฟังก์ชันอื่นๆ ในส่วนขยายนี้

การติดตามดวงตาจะแสดงท่าทางและสถานะของดวงตาในฉาก

ฟังก์ชัน xrCreateEyeTrackerANDROID มีคำจำกัดความดังนี้

XrResult xrCreateEyeTrackerANDROID(
    XrSession                                   session,
    const XrEyeTrackerCreateInfoANDROID*        createInfo,
    XrEyeTrackerANDROID*                        eyeTracker);

คำอธิบายพารามิเตอร์

  • session คือแฮนเดิล XrSession ที่การติดตามดวงตาจะทำงาน
  • createInfo คือ XrEyeTrackerCreateInfoANDROID ที่ใช้เพื่อระบุการติดตามดวงตา
  • eyeTracker คือแฮนเดิล XrEyeTrackerANDROID ที่แสดงผล

แอปพลิเคชันสร้างแฮนเดิล XrEyeTrackerANDROID โดยใช้ฟังก์ชัน xrCreateEyeTrackerANDROID

หากระบบไม่รองรับการติดตามดวงตา รันไทม์ต้องส่งคืน XR_ERROR_FEATURE_UNSUPPORTED จาก xrCreateEyeTrackerANDROID

การใช้งานที่ถูกต้อง (โดยนัย)

  • ต้องเปิดใช้งานส่วนขยาย XR_ANDROID_eye_tracking ก่อนที่จะเรียกใช้ xrCreateEyeTrackerANDROID
  • session ต้องเป็นแฮนเดิล XrSession ที่ถูกต้อง
  • createInfo ต้องเป็นตัวชี้ไปยังโครงสร้าง XrEyeTrackerCreateInfoANDROID ที่ถูกต้อง
  • eyeTracker ต้องเป็นตัวชี้ไปยังแฮนเดิล XrEyeTrackerANDROID

รหัสการคืนสินค้า

สำเร็จ

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ความล้มเหลว

  • XR_ERROR_FEATURE_UNSUPPORTED
  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_VALIDATION_FAILURE

โครงสร้าง XrEyeTrackerCreateInfoANDROID มีคำจำกัดความดังนี้

typedef struct XrEyeTrackerCreateInfoANDROID {
    XrStructureType    type;
    const void*        next;
} XrEyeTrackerCreateInfoANDROID;

คำอธิบายสมาชิก

  • type คือ XrStructureType ของโครงสร้างนี้
  • next คือ NULL หรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้าง ไม่มีการกำหนดโครงสร้างดังกล่าวใน OpenXR หลักหรือส่วนขยายนี้

โครงสร้าง XrEyeTrackerCreateInfoANDROID อธิบายข้อมูลในการสร้างแฮนเดิล XrEyeTrackerANDROID

การใช้งานที่ถูกต้อง (โดยนัย)

ฟังก์ชัน xrDestroyEyeTrackerANDROID มีคำจำกัดความดังนี้

XrResult xrDestroyEyeTrackerANDROID(
    XrEyeTrackerANDROID                         eyeTracker);

คำอธิบายพารามิเตอร์

ฟังก์ชัน xrDestroyEyeTrackerANDROID จะปล่อย eyeTracker และทรัพยากรพื้นฐานเมื่อเสร็จสิ้นประสบการณ์การติดตามดวงตา

การใช้งานที่ถูกต้อง (โดยนัย)

  • คุณต้องเปิดใช้ส่วนขยาย XR_ANDROID_eye_tracking ก่อนที่จะเรียกใช้ xrDestroyEyeTrackerANDROID
  • eyeTracker ต้องเป็นแฮนเดิล XrEyeTrackerANDROID ที่ถูกต้อง

ความปลอดภัยของเธรด

  • การเข้าถึง eyeTracker และแฮนเดิลย่อยทั้งหมดต้องซิงค์ภายนอก

รหัสการคืนสินค้า

สำเร็จ

  • XR_SUCCESS

ความล้มเหลว

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID

กำลังรับข้อมูลดวงตา

ฟังก์ชัน xrGetCoarseTrackingEyesInfoANDROID มีคำจำกัดความดังนี้

XrResult xrGetCoarseTrackingEyesInfoANDROID(
    XrEyeTrackerANDROID                         eyeTracker,
    const XrEyesGetInfoANDROID*                 getInfo,
    XrEyesANDROID*                              eyesOutput);

คำอธิบายพารามิเตอร์

  • eyeTracker คือ XrEyeTrackerANDROID ที่สร้างขึ้นก่อนหน้านี้โดย xrCreateEyeTrackerANDROID
  • getInfo เป็น Pointer ไปยัง XrEyesGetInfoANDROID ที่ใช้เพื่อให้ข้อมูลสำหรับการค้นหาท่าทางและสถานะของดวงตา
  • eyesOutput เป็นตัวชี้ไปยัง XrEyesANDROID ที่มีข้อมูลดวงตาที่ส่งคืน รวมถึงท่าทางและสถานะ

ฟังก์ชัน xrGetCoarseTrackingEyesInfoANDROID จะรับข้อมูลเกี่ยวกับสถานะและท่าทางของดวงตาในลักษณะที่รักษาความเป็นส่วนตัวของผู้ใช้

รันไทม์ต้องแสดงผล XR_ERROR_PERMISSION_INSUFFICIENT หากแอปพลิเคชันไม่มีสิทธิ์ android.permission.EYE_TRACKING_COARSE

ท่าทางของดวงตาจะแสดงใน XrEyesGetInfoANDROID :: baseSpace ที่ XrEyesGetInfoANDROID :: time

ระบบจะติดตามหรือเลิกติดตามทั้งตำแหน่งและทิศทางของท่าทางดวงตาได้ทุกเมื่อ ซึ่งหมายความว่ารันไทม์ต้องตั้งค่าทั้ง XR_SPACE_LOCATION_POSITION_TRACKED_BIT และ XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT หรือล้างทั้ง XR_SPACE_LOCATION_POSITION_TRACKED_BIT และ XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT ใน XrEyesANDROID :: eyes ที่ระบุ และตั้งค่า XrEyesANDROID :: mode เพื่อระบุสถานะการติดตาม

การใช้งานที่ถูกต้อง (โดยนัย)

  • ต้องเปิดใช้งานส่วนขยาย XR_ANDROID_eye_tracking ก่อนที่จะเรียกใช้ xrGetCoarseTrackingEyesInfoANDROID
  • eyeTracker ต้องเป็นแฮนเดิล XrEyeTrackerANDROID ที่ถูกต้อง
  • getInfo ต้องเป็นตัวชี้ไปยังโครงสร้าง XrEyesGetInfoANDROID ที่ถูกต้อง
  • eyesOutput ต้องเป็นตัวชี้ไปยังโครงสร้าง XrEyesANDROID

รหัสการคืนสินค้า

สำเร็จ

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ความล้มเหลว

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_PERMISSION_INSUFFICIENT
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_TIME_INVALID
  • XR_ERROR_VALIDATION_FAILURE

ฟังก์ชัน xrGetFineTrackingEyesInfoANDROID มีคำจำกัดความดังนี้

XrResult xrGetFineTrackingEyesInfoANDROID(
    XrEyeTrackerANDROID                         eyeTracker,
    const XrEyesGetInfoANDROID*                 getInfo,
    XrEyesANDROID*                              eyesOutput);

คำอธิบายพารามิเตอร์

  • eyeTracker คือ XrEyeTrackerANDROID ที่สร้างขึ้นก่อนหน้านี้โดย xrCreateEyeTrackerANDROID
  • getInfo เป็น Pointer ไปยัง XrEyesGetInfoANDROID ที่ใช้เพื่อระบุเอาต์พุตที่ต้องการ
  • eyesOutput เป็นตัวชี้ไปยัง XrEyesANDROID ที่มีข้อมูลดวงตาที่ส่งคืน รวมถึงท่าทางและสถานะ

ฟังก์ชัน xrGetFineTrackingEyesInfoANDROID จะรับข้อมูลเกี่ยวกับสถานะและท่าทางของดวงตาที่มีความแม่นยำสูงกว่า xrGetCoarseTrackingEyesInfoANDROID

รันไทม์ต้องแสดงผล XR_ERROR_PERMISSION_INSUFFICIENT หากแอปพลิเคชันไม่มีสิทธิ์ android.permission.EYE_TRACKING_FINE

ระบบจะแก้ไขข้อมูลดวงตาและสัมพันธ์กับพื้นที่ฐาน ณ เวลาที่เรียกใช้ xrGetFineTrackingEyesInfoANDROID โดยใช้ XrEyesGetInfoANDROID :: time , XrEyesGetInfoANDROID :: baseSpace รันไทม์ต้องระบุตำแหน่งที่กำหนดโดย XrEyesGetInfoANDROID :: baseSpace ในเวลาที่เรียกใช้

ระบบจะติดตามหรือเลิกติดตามทั้งตำแหน่งและทิศทางของท่าทางดวงตาได้ทุกเมื่อ ซึ่งหมายความว่ารันไทม์ต้องตั้งค่าทั้ง XR_SPACE_LOCATION_POSITION_TRACKED_BIT และ XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT หรือล้างทั้ง XR_SPACE_LOCATION_POSITION_TRACKED_BIT และ XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT ใน XrEyesANDROID :: eyes ที่ระบุ และตั้งค่า XrEyesANDROID :: mode เพื่อระบุสถานะการติดตาม

การใช้งานที่ถูกต้อง (โดยนัย)

  • ต้องเปิดใช้ส่วนขยาย XR_ANDROID_eye_tracking ก่อนที่จะเรียกใช้ xrGetFineTrackingEyesInfoANDROID
  • eyeTracker ต้องเป็นแฮนเดิล XrEyeTrackerANDROID ที่ถูกต้อง
  • getInfo ต้องเป็นตัวชี้ไปยังโครงสร้าง XrEyesGetInfoANDROID ที่ถูกต้อง
  • eyesOutput ต้องเป็นตัวชี้ไปยังโครงสร้าง XrEyesANDROID

รหัสการคืนสินค้า

สำเร็จ

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ความล้มเหลว

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_PERMISSION_INSUFFICIENT
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_TIME_INVALID
  • XR_ERROR_VALIDATION_FAILURE

โครงสร้าง XrEyesGetInfoANDROID มีข้อมูลที่จำเป็นในการดึงท่าทางและสถานะของดวงตา

typedef struct XrEyesGetInfoANDROID {
    XrStructureType    type;
    const void*        next;
    XrTime             time;
    XrSpace            baseSpace;
} XrEyesGetInfoANDROID;

คำอธิบายสมาชิก

  • type คือ XrStructureType ของโครงสร้างนี้
  • next คือ NULL หรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้าง ไม่มีการกำหนดโครงสร้างดังกล่าวใน OpenXR หลักหรือส่วนขยายนี้
  • time คือ XrTime ที่ใช้ประเมินพิกัดที่สัมพันธ์กับ baseSpace
  • baseSpace คือ XrSpace ที่ท่าทางของดวงตาจะสัมพันธ์กับที่ time

การใช้งานที่ถูกต้อง (โดยนัย)

โครงสร้าง XrEyesANDROID มีข้อมูลเกี่ยวกับดวงตาที่ติดตาม

typedef struct XrEyesANDROID {
    XrStructureType             type;
    void*                       next;
    XrEyeANDROID                eyes[XR_EYE_MAX_ANDROID];
    XrEyeTrackingModeANDROID    mode;
} XrEyesANDROID;

คำอธิบายสมาชิก

  • type คือ XrStructureType ของโครงสร้างนี้
  • next คือ NULL หรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้าง ไม่มีการกำหนดโครงสร้างดังกล่าวใน OpenXR หลักหรือส่วนขยายนี้
  • eyes เป็นอาร์เรย์ของ XrEyeANDROID ที่มีขนาด XR_EYE_MAX_ANDROID สำหรับตาซ้ายและตาขวาตามที่จัดทำดัชนีโดย XrEyeIndexANDROID
  • mode คือ XrEyeTrackingModeANDROID ซึ่งระบุว่าระบบกำลังติดตามดวงตาข้างใด

การใช้งานที่ถูกต้อง (โดยนัย)

โครงสร้าง XrEyeANDROID อธิบายสถานะ ตำแหน่ง และการวางแนวของดวงตา

typedef struct XrEyeANDROID {
    XrEyeStateANDROID    eyeState;
    XrPosef              eyePose;
} XrEyeANDROID;

คำอธิบายสมาชิก

  • eyeState คือ XrEyeStateANDROID ของดวงตา
  • eyePose คือ XrPosef ที่กำหนดตำแหน่งและการวางแนวของรูม่านตาภายในกรอบอ้างอิงของ XrEyesGetInfoANDROID ที่เกี่ยวข้อง :: baseSpace การวางแนวระบุตัวตนในที่นี้แสดงถึงแกนพิกัดที่มี +Z เข้าสู่ดวงตาของผู้ใช้ +X ไปทางขวา และ +Y ขึ้น

การใช้งานที่ถูกต้อง (โดยนัย)

  • คุณต้องเปิดใช้ส่วนขยาย XR_ANDROID_eye_tracking ก่อนจึงจะใช้ XrEyeANDROID ได้
  • eyeState ต้องเป็นค่า XrEyeStateANDROID ที่ถูกต้อง

การแจงนับ XrEyeStateANDROID จะระบุสถานะต่างๆ ของดวงตาที่ติดตาม

typedef enum XrEyeStateANDROID {
    XR_EYE_STATE_INVALID_ANDROID = 0,
    XR_EYE_STATE_GAZING_ANDROID = 1,
    XR_EYE_STATE_SHUT_ANDROID = 2,
    XR_EYE_STATE_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrEyeStateANDROID;

โดย Enum มีความหมายดังนี้

คำอธิบาย Enum

XR_EYE_STATE_INVALID_ANDROID

ระบุว่าดวงตาอยู่ในสถานะข้อผิดพลาดหรือไม่

XR_EYE_STATE_GAZING_ANDROID

ระบุว่าดวงตากำลังจ้องมอง

XR_EYE_STATE_SHUT_ANDROID

ระบุว่าดวงตาปิดอยู่เนื่องจากกะพริบตาหรือหลับตา

การแจงนับ XrEyeIndexANDROID จะระบุดัชนีของตาซ้ายหรือขวา

typedef enum XrEyeIndexANDROID {
    XR_EYE_INDEX_LEFT_ANDROID = 0,
    XR_EYE_INDEX_RIGHT_ANDROID = 1,
    XR_EYE_INDEX_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrEyeIndexANDROID;

โดย Enum มีความหมายดังนี้

คำอธิบาย Enum

XR_EYE_INDEX_LEFT_ANDROID

ตาซ้าย

XR_EYE_INDEX_RIGHT_ANDROID

ตาขวา

การแจงนับ XrEyeTrackingModeANDROID จะระบุสถานะต่างๆ ของดวงตาที่ติดตาม

typedef enum XrEyeTrackingModeANDROID {
    XR_EYE_TRACKING_MODE_NOT_TRACKING_ANDROID = 0,
    XR_EYE_TRACKING_MODE_RIGHT_ANDROID = 1,
    XR_EYE_TRACKING_MODE_LEFT_ANDROID = 2,
    XR_EYE_TRACKING_MODE_BOTH_ANDROID = 3,
    XR_EYE_TRACKING_MODE_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrEyeTrackingModeANDROID;

โดย Enum มีความหมายดังนี้

คำอธิบาย Enum

XR_EYE_TRACKING_MODE_NOT_TRACKING_ANDROID

ระบุว่าการติดตามดวงตาไม่ได้ทำงานอยู่ในขณะนี้

XR_EYE_TRACKING_MODE_RIGHT_ANDROID

แสดงว่าระบบกำลังติดตามเฉพาะตาขวา

XR_EYE_TRACKING_MODE_LEFT_ANDROID

แสดงว่าระบบกำลังติดตามเฉพาะตาซ้าย

XR_EYE_TRACKING_MODE_BOTH_ANDROID

บ่งบอกว่ากำลังติดตามทั้งตาซ้ายและตาขวา

ตัวอย่างโค้ดสำหรับการติดตามดวงตา

โค้ดตัวอย่างต่อไปนี้แสดงวิธีรับข้อมูลดวงตาที่สัมพันธ์กับพื้นที่มุมมอง

XrSession session; // previously initialized, e.g. created at app startup.
XrSpace viewSpace; // space created for XR_REFERENCE_SPACE_TYPE_VIEW.

// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateEyeTrackerANDROID xrCreateEyeTrackerANDROID; // previously initialized
PFN_xrDestroyEyeTrackerANDROID xrDestroyEyeTrackerANDROID; // previously initialized
PFN_xrGetCoarseTrackingEyesInfoANDROID xrGetCoarseTrackingEyesInfoANDROID; // previously initialized
PFN_xrGetFineTrackingEyesInfoANDROID xrGetFineTrackingEyesInfoANDROID; // previously initialized

// This will use the XrSession that is bound to the eye tracker done at time of creation.
XrEyeTrackerANDROID eyeTracker;
XrEyeTrackerCreateInfoANDROID createInfo{
    .type = XR_TYPE_EYE_TRACKER_CREATE_INFO_ANDROID,
    .next = nullptr};
CHK_XR(xrCreateEyeTrackerANDROID(session, &createInfo, &eyeTracker));

while (1) {
    // ...
    // For every frame in frame loop
    // ...

    XrFrameState frameState;  // previously returned from xrWaitFrame
    const XrTime time = frameState.predictedDisplayTime;
    XrEyesANDROID fineEyesInfo{.type = XR_TYPE_EYES_ANDROID,
                               .next = nullptr,
                               .mode = XR_EYE_TRACKING_MODE_BOTH_ANDROID};
    XrEyesANDROID coarseEyesInfo{.type = XR_TYPE_EYES_ANDROID,
                                 .next = nullptr,
                                 .mode = XR_EYE_TRACKING_MODE_BOTH_ANDROID};
    XrEyesGetInfoANDROID eyesGetInfo{.type = XR_TYPE_EYES_GET_INFO_ANDROID,
                                     .next = nullptr,
                                     .time = time,
                                     .baseSpace = viewSpace};
    CHK_XR(xrGetCoarseTrackingEyesInfoANDROID(eyeTracker, &eyesGetInfo, &coarseEyesInfo));
    CHK_XR(xrGetFineTrackingEyesInfoANDROID(eyeTracker, &eyesGetInfo, &fineEyesInfo));

    // eyes tracking information is now available:
    // drawLeftEye(eyesInfo.eyes[XR_EYE_INDEX_LEFT_ANDROID].eyePose);
    // drawRightEye(eyesInfo.eyes[XR_EYE_INDEX_RIGHT_ANDROID].eyePose);

    // ...
    // Finish frame loop
    // ...
}

// after usage
CHK_XR(xrDestroyEyeTrackerANDROID(eyeTracker));

ประเภทออบเจ็กต์ใหม่

คำสั่งใหม่

โครงสร้างใหม่

Enum ใหม่

ค่าคงที่ Enum ใหม่

  • XR_ANDROID_EYE_TRACKING_EXTENSION_NAME
  • XR_ANDROID_eye_tracking_SPEC_VERSION
  • XR_EYE_MAX_ANDROID
  • การขยาย XrObjectType :

    • XR_OBJECT_TYPE_EYE_TRACKER_ANDROID
  • การขยาย XrStructureType :

    • XR_TYPE_EYES_ANDROID
    • XR_TYPE_EYES_GET_INFO_ANDROID
    • XR_TYPE_EYE_TRACKER_CREATE_INFO_ANDROID
    • XR_TYPE_SYSTEM_EYE_TRACKING_PROPERTIES_ANDROID

ปัญหา

ประวัติเวอร์ชัน

  • การแก้ไข 1, 2025-01-17 (Kenny Vercaemer)

    • คำอธิบายส่วนขยายเริ่มต้น