ส่วนขยาย XR_ANDROID_light_estimation ของ OpenXR

Name String

XR_ANDROID_light_estimation

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

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

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

701

การแก้ไข

1

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

OpenXR 1.0

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

2025-01-17

สถานะ IP

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

ผู้เขียน

Jared Finder, Google

Cairn Overturf, Google

Spencer Quin, Google

Levana Chen, Google

Nihav Jain, Google

Salar Khan, Google

Scott Chung, Google

ภาพรวม

ส่วนขยายนี้ช่วยให้แอปพลิเคชันขอข้อมูลที่แสดงถึงแสงสว่าง ของสภาพแวดล้อมจริงรอบๆ ชุดหูฟังได้ ข้อมูลนี้สามารถใช้ได้ เมื่อแสดงผลออบเจ็กต์เสมือนเพื่อส่องสว่างภายใต้เงื่อนไขเดียวกันกับ ฉากที่วางออบเจ็กต์

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

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

typedef struct XrSystemLightEstimationPropertiesANDROID {
    XrStructureType    type;
    void*              next;
    XrBool32           supportsLightEstimation;
} XrSystemLightEstimationPropertiesANDROID;

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

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

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

หากระบบไม่รองรับการประมาณแสง ระบบจะแสดง XR_FALSE สำหรับ supportsLightEstimation และ XR_ERROR_FEATURE_UNSUPPORTED จาก xrCreateLightEstimatorANDROID

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

สร้างแฮนเดิลเครื่องมือประมาณแสง

XR_DEFINE_HANDLE(XrLightEstimatorANDROID)

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

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

XrResult xrCreateLightEstimatorANDROID(
    XrSession                                   session,
    XrLightEstimatorCreateInfoANDROID*          createInfo,
    XrLightEstimatorANDROID*                    outHandle);

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

  • session คือ XrSession ที่สร้างเครื่องมือประมาณแสง
  • createInfo คือตัวชี้ไปยังโครงสร้าง XrLightEstimatorCreateInfoANDROID ซึ่งมีพารามิเตอร์ที่จะใช้สร้างเครื่องมือประมาณแสง
  • outHandle เป็นตัวชี้ไปยังแฮนเดิลที่ระบบส่ง XrLightEstimatorANDROID ที่สร้างขึ้น

แอปพลิเคชันสามารถใช้ฟังก์ชัน xrCreateLightEstimatorANDROID เพื่อ สร้างตัวประมาณแสง

  • xrCreateLightEstimatorANDROID จะแสดงผล XR_ERROR_FEATURE_UNSUPPORTED หากระบบไม่รองรับการประมาณค่าแสง
  • xrCreateLightEstimatorANDROID จะแสดง XR_ERROR_PERMISSION_INSUFFICIENT หากไม่ได้ให้สิทธิ์ที่จำเป็นแก่แอปพลิเคชันที่เรียกใช้

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

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

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

สำเร็จ

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ล้มเหลว

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

โครงสร้าง XrLightEstimatorCreateInfoANDROID อธิบายข้อมูล เพื่อสร้างแฮนเดิล XrLightEstimatorANDROID

typedef struct XrLightEstimatorCreateInfoANDROID {
    XrStructureType    type;
    void*              next;
} XrLightEstimatorCreateInfoANDROID;

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

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

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

ฟังก์ชัน xrDestroyLightEstimatorANDROID จะปล่อย estimator และทรัพยากรพื้นฐาน

XrResult xrDestroyLightEstimatorANDROID(
    XrLightEstimatorANDROID                     estimator);

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

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

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

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

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

สำเร็จ

  • XR_SUCCESS

ล้มเหลว

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID

เข้าถึงข้อมูลการประมาณแสง

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

XrResult xrGetLightEstimateANDROID(
    XrLightEstimatorANDROID                     estimator,
    const XrLightEstimateGetInfoANDROID*        input,
    XrLightEstimateANDROID*                     output);

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

  • estimator: แฮนเดิลของ XrLightEstimatorANDROID ที่สร้างไว้ก่อนหน้า ด้วย xrCreateLightEstimatorANDROID
  • input: พอยน์เตอร์ไปยังโครงสร้าง XrLightEstimateGetInfoANDROID
  • output: พอยน์เตอร์ไปยังโครงสร้าง XrLightEstimateANDROID

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

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

สำเร็จ

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ล้มเหลว

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

XrLightEstimateGetInfoANDROID อธิบายข้อมูลที่จำเป็นในการรับข้อมูลการประมาณค่าแสง

typedef struct XrLightEstimateGetInfoANDROID {
    XrStructureType    type;
    void*              next;
    XrSpace            space;
    XrTime             time;
} XrLightEstimateGetInfoANDROID;

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

  • type คือ XrStructureType ของโครงสร้างนี้
  • next คือ NULL หรือตัวชี้ไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง
  • space คือ XrSpace ที่กำหนดพื้นที่อ้างอิงซึ่ง แสดงทิศทางแสงที่ส่งคืน ฮาร์มอนิกทรงกลม และการหมุนคิวบ์แมป
  • time คือ XrTime ที่อธิบายเวลาที่แอปพลิเคชัน ต้องการค้นหาการประมาณแสง

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

โครงสร้าง XrLightEstimateANDROID มีข้อมูลการประมาณแสง

typedef struct XrLightEstimateANDROID {
    XrStructureType                type;
    void*                          next;
    XrLightEstimateStateANDROID    state;
    XrTime                         lastUpdatedTime;
} XrLightEstimateANDROID;

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

หากต้องการรับข้อมูลการประมาณแสงสำหรับคิวบ์แมปแสงสภาพแวดล้อม แสงรอบข้าง ฮาร์มอนิกทรงกลม และ แสงส่องหลัก แอปพลิเคชันสามารถเชื่อมโยงอินสแตนซ์ของโครงสร้างต่อไปนี้ XrEnvironmentLightingCubemapANDROID XrAmbientLightANDROID XrSphericalHarmonicsANDROID และ XrDirectionalLightANDROID ตามลำดับกับ XrLightEstimateANDROID::next

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

โครงสร้าง XrEnvironmentLightingCubemapANDROID มีข้อมูลการประมาณแสงในรูปแบบคิวบ์แมปเกี่ยวกับ แสงแวดล้อมของฉาก

typedef struct XrEnvironmentLightingCubemapANDROID {
    XrStructureType                type;
    void*                          next;
    XrLightEstimateStateANDROID    state;
    const float*                   cubemapRightImage;
    const float*                   cubemapLeftImage;
    const float*                   cubemapTopImage;
    const float*                   cubemapBottomImage;
    const float*                   cubemapFrontImage;
    const float*                   cubemapBackImage;
    uint32_t                       resolution;
    XrQuaternionf                  rotation;
    XrTime                         centerExposureTime;
} XrEnvironmentLightingCubemapANDROID;

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

  • type คือ XrStructureType ของโครงสร้างนี้
  • next คือ NULL หรือตัวชี้ไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง โครงสร้างที่ถูกต้องคือ XrSphericalHarmonicsANDROID, XrAmbientLightANDROID และ XrDirectionalLightANDROID
  • state คือ XrLightEstimateStateANDROID ที่แสดงสถานะของ การประมาณค่าแสง
  • cubemapRightImage คือ float* ที่แสดงถึงบัฟเฟอร์ R32G32B32_SFLOAT ของ ด้านขวาของคิวบ์แมป โปรดทราบว่านี่คือ HDR ดังนั้นค่าลอยจึงอาจมากกว่า 1.0
  • cubemapLeftImage คือ float* ที่แสดงถึงบัฟเฟอร์ R32G32B32_SFLOAT ของ ด้านซ้ายของคิวบ์แมป โปรดทราบว่านี่คือ HDR ดังนั้นค่าลอยจึงอาจมากกว่า 1.0
  • cubemapTopImage คือ float* ที่แสดงถึงบัฟเฟอร์ R32G32B32_SFLOAT ของ ด้านบนของคิวบ์แมป โปรดทราบว่านี่คือ HDR ดังนั้นค่าลอยจึงอาจมากกว่า 1.0
  • cubemapBottomImageคือ float* ที่แสดงบัฟเฟอร์ R32G32B32_SFLOAT ของ ด้านล่างของคิวบ์แมป โปรดทราบว่านี่คือ HDR ดังนั้นค่าลอยจึงอาจมากกว่า 1.0
  • cubemapFrontImage คือ float* ที่แสดงบัฟเฟอร์ R32G32B32_SFLOAT ของ ด้านหน้าของคิวบ์แมป โปรดทราบว่านี่คือ HDR ดังนั้นค่าลอยจึงอาจมากกว่า 1.0
  • resolution คือ uint32_t ที่แสดงความกว้างและความสูงของรูปภาพของ แต่ละด้านของคิวบ์แมป
  • rotation คือ XrQuaternionf ที่แสดงการหมุนของคิวบ์แมป
  • centerExposureTime คือ XrTime ที่แสดงเวลาที่บันทึกคิวบ์แมป มีประโยชน์สำหรับการประมาณค่าระหว่างคิวบ์แมป

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

  • ต้องเปิดใช้ส่วนขยาย XR_ANDROID_light_estimation ก่อนใช้ XrEnvironmentLightingCubemapANDROID
  • type ต้องเป็น XR_TYPE_ENVIRONMENT_LIGHTING_CUBEMAP_ANDROID
  • next ต้องเป็น NULL หรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปใน ห่วงโซ่โครงสร้าง
  • state ต้องเป็นค่า XrLightEstimateStateANDROID ที่ถูกต้อง
  • cubemapRightImage ต้องเป็นตัวชี้ไปยังค่า Float ที่ถูกต้อง
  • cubemapLeftImage ต้องเป็นตัวชี้ไปยังค่า Float ที่ถูกต้อง
  • cubemapTopImage ต้องเป็นตัวชี้ไปยังค่า Float ที่ถูกต้อง
  • cubemapBottomImage ต้องเป็นตัวชี้ไปยังค่า Float ที่ถูกต้อง
  • cubemapFrontImage ต้องเป็นตัวชี้ไปยังค่า Float ที่ถูกต้อง
  • cubemapBackImage ต้องเป็นตัวชี้ไปยังค่า Float ที่ถูกต้อง

โครงสร้าง XrAmbientLightANDROID มีข้อมูลการประมาณแสงเกี่ยวกับ แสงแวดล้อมในฉาก

typedef struct XrAmbientLightANDROID {
    XrStructureType                type;
    void*                          next;
    XrLightEstimateStateANDROID    state;
    XrVector3f                     intensity;
    XrVector3f                     colorCorrection;
} XrAmbientLightANDROID;

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

  • type คือ XrStructureType ของโครงสร้างนี้
  • next คือ NULL หรือตัวชี้ไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง โครงสร้างที่ใช้ได้คือ XrSphericalHarmonicsANDROID, XrEnvironmentLightingCubemapANDROID และ XrDirectionalLightANDROID
  • state คือ XrLightEstimateStateANDROID ที่แสดงสถานะของ การประมาณค่าแสง
  • intensity คือ XrVector3 ที่แสดงถึงความเข้มของแสงแวดล้อม แต่ละองค์ประกอบของเวกเตอร์จะสอดคล้องกับช่องสีแดง สีเขียว และสีน้ำเงิน
  • colorCorrection คือ XrVector3 ที่มีค่าในพื้นที่แกมมา คูณสีของภาพที่เรนเดอร์ซึ่งมีการแก้ไขแกมมาด้วยค่าเหล่านี้

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

โครงสร้าง XrSphericalHarmonicsANDROID มีฮาร์มอนิกทรงกลม ที่แสดงถึงแสงของฉาก

typedef struct XrSphericalHarmonicsANDROID {
    XrStructureType                    type;
    void*                              next;
    XrLightEstimateStateANDROID        state;
    XrSphericalHarmonicsKindANDROID    kind;
    float                              coefficients[9][3];
} XrSphericalHarmonicsANDROID;

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

  • type คือ XrStructureType ของโครงสร้างนี้
  • next คือ NULL หรือตัวชี้ไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง โครงสร้างที่ใช้ได้ ได้แก่ XrAmbientLightANDROID, XrEnvironmentLightingCubemapANDROID, และ XrDirectionalLightANDROID
  • state คือ XrLightEstimateStateANDROID ที่แสดงสถานะของ การประมาณค่าแสง
  • kind คือ XrSphericalHarmonicsKindANDROID ที่แอปพลิเคชันร้องขอ
  • coefficients คืออาร์เรย์ float แบบ 2 มิติที่มีมิติข้อมูลเป็น 9 แถวและ 3 คอลัมน์ คอลัมน์ 3 คอลัมน์ที่สอดคล้องกับแชแนลสีแดง เขียว และน้ำเงิน ตามลำดับ แต่ละแชแนลมีสัมประสิทธิ์ฮาร์มอนิกทรงกลม 9 รายการ

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

โครงสร้าง XrDirectionalLightANDROID มีข้อมูลการประมาณแสง

typedef struct XrDirectionalLightANDROID {
    XrStructureType                type;
    void*                          next;
    XrLightEstimateStateANDROID    state;
    XrVector3f                     intensity;
    XrVector3f                     direction;
} XrDirectionalLightANDROID;

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

  • type คือ XrStructureType ของโครงสร้างนี้
  • next คือ NULL หรือตัวชี้ไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง โครงสร้างที่ถูกต้องคือ XrAmbientLightANDROID, XrSphericalHarmonicsANDROID และ XrDirectionalLightANDROID
  • state คือ XrLightEstimateStateANDROID ที่แสดงสถานะของ การประมาณค่าแสง
  • intensity คือ XrVector3 ที่แสดงถึงความเข้มของแสงแบบมีทิศทาง แต่ละองค์ประกอบของเวกเตอร์จะสอดคล้องกับช่องสีแดง สีเขียว และสีน้ำเงิน
  • direction คือ XrVector3 ที่แสดงทิศทางของแสง

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

การแจงนับ XrSphericalHarmonicsKindANDROID จะระบุให้รันไทม์ทราบ ว่าแอปพลิเคชันขอฮาร์มอนิกทรงกลมประเภทใด

typedef enum XrSphericalHarmonicsKindANDROID {
    XR_SPHERICAL_HARMONICS_KIND_TOTAL_ANDROID = 0,
    XR_SPHERICAL_HARMONICS_KIND_AMBIENT_ANDROID = 1
} XrSphericalHarmonicsKindANDROID;

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

Enum

คำอธิบาย

XR_SPHERICAL_HARMONICS_KIND_TOTAL_ANDROID

สัมประสิทธิ์ฮาร์มอนิกทรงกลมแสดงฟังก์ชันความสว่างของแสงแวดล้อม โดยไม่รวมการมีส่วนร่วมจากแสงหลัก

XR_SPHERICAL_HARMONICS_KIND_AMBIENT_ANDROID

สัมประสิทธิ์ฮาร์มอนิกทรงกลมแสดงฟังก์ชันความสว่างของแสงสภาพแวดล้อม รวมถึงการมีส่วนร่วมจากแสงหลัก

การแจงนับ XrLightEstimateStateANDROID จะระบุต่อรันไทม์ ว่าแอปพลิเคชันขอฮาร์มอนิกทรงกลมประเภทใด

typedef enum XrLightEstimateStateANDROID {
    XR_LIGHT_ESTIMATE_STATE_VALID_ANDROID = 0,
    XR_LIGHT_ESTIMATE_STATE_INVALID_ANDROID = 1
} XrLightEstimateStateANDROID;

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

Enum

คำอธิบาย

XR_LIGHT_ESTIMATE_STATE_VALID_ANDROID

การประมาณการการใช้งานไฟถูกต้อง

XR_LIGHT_ESTIMATE_STATE_INVALID_ANDROID

ค่าประมาณแสงไม่ถูกต้อง

ตัวอย่างโค้ดสำหรับการประมาณค่าแสง

โค้ดตัวอย่างต่อไปนี้แสดงวิธีรับค่าประมาณแสงที่เป็นไปได้ทั้งหมดจากรันไทม์

XrSession session;  // Created at app startup
XrSpace appSpace;   // Created previously.

XrLightEstimatorANDROID estimator;
XrLightEstimatorCreateInfoANDROID createInfo = {
    .type = XR_TYPE_LIGHT_ESTIMATOR_CREATE_INFO_ANDROID};
CHK_XR(xrCreateLightEstimatorANDROID(session, &createInfo, &estimator));

// Every frame
XrTime updateTime;  // Time used for the current frame's simulation update.

XrLightEstimateGetInfoANDROID info = {
    .type = XR_TYPE_LIGHT_ESTIMATE_GET_INFO_ANDROID,
    .space = appSpace,
    .time = updateTime,
};

XrDirectionalLightANDROID directionalLight = {
    .type = XR_TYPE_DIRECTIONAL_LIGHT_ANDROID,
};

XrSphericalHarmonicsANDROID totalSh = {
    .type = XR_TYPE_SPHERICAL_HARMONICS_ANDROID,
    .kind = XR_SPHERICAL_HARMONICS_KIND_TOTAL_ANDROID,
    .next = &directionalLight,
};

XrSphericalHarmonicsANDROID ambientSh = {
    .type = XR_TYPE_SPHERICAL_HARMONICS_ANDROID,
    .kind = XR_SPHERICAL_HARMONICS_KIND_AMBIENT_ANDROID,
    .next = &totalSh,
};

XrAmbientLightANDROID ambientLight = {
    .type = XR_TYPE_AMBIENT_LIGHT_ANDROID,
    .next = &ambientSh,
};


XrEnvironmentLightingCubemapANDROID lightingCubemap {
    .type = XR_TYPE_ENVIRONMENT_LIGHTING_CUBEMAP_ANDROID,
    .next = &ambientLight,
}

XrLightEstimateANDROID estimate = {
    .type = XR_TYPE_LIGHT_ESTIMATE_ANDROID,
    .next = &lightingCubemap,
};

XrResult result = xrGetLightEstimateANDROID(estimator, &info, &estimate);
if (result == XR_SUCCESS &&
    estimate.state == XR_LIGHT_ESTIMATE_STATE_VALID_ANDROID) {
  // use directionalLight, totalSh, ambientSh, ambientLight,
  // lightingCubemap, if each
  // struct has a valid state field
}

// When you want to disable light estimation
CHK_XR(xrDestroyLightEstimatorANDROID(estimator));

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

  • XrLightEstimator

มีการขยายการแจงนับ XrObjectType ด้วยรายการต่อไปนี้

  • XR_OBJECT_TYPE_LIGHT_ESTIMATOR_ANDROID

มีการขยายการแจงนับ XrStructureType ด้วยรายการต่อไปนี้

  • XR_TYPE_LIGHT_ESTIMATOR_CREATE_INFO_ANDROID
  • XR_TYPE_LIGHT_ESTIMATE_GET_INFO_ANDROID
  • XR_TYPE_LIGHT_ESTIMATE_ANDROID
  • XR_TYPE_DIRECTIONAL_LIGHT_ANDROID
  • XR_TYPE_SPHERICAL_HARMONICS_ANDROID
  • XR_TYPE_AMBIENT_LIGHT_ANDROID
  • XR_TYPE_ENVIRONMENT_LIGHTING_CUBEMAP_ANDROID

Enums ใหม่

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

ฟังก์ชันใหม่

ปัญหา

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

  • การแก้ไขครั้งที่ 2, 2025-01-17 (Salar Khan)
    • เพิ่มการรองรับคิวบ์แมปการจัดแสงสภาพแวดล้อม
  • การแก้ไขครั้งที่ 1, 16-09-2024 (Cairn Overturf)
    • คำอธิบายส่วนขยายเริ่มต้น

OpenXR™ และโลโก้ OpenXR เป็นเครื่องหมายการค้าของ The Khronos Group Inc. และจดทะเบียนเป็นเครื่องหมายการค้าในจีน สหภาพยุโรป ญี่ปุ่น และสหราชอาณาจักร