Name String
XR_ANDROID_composition_layer_passthrough_mesh
एक्सटेंशन टाइप
इंस्टेंस एक्सटेंशन
रजिस्टर किया गया एक्सटेंशन नंबर
463
बदलाव
1
एक्सटेंशन और वर्शन की डिपेंडेंसी
पिछली बार बदलाव करने की तारीख
2024-09-18
आईपी स्टेटस
आईपी पर कोई दावा नहीं किया गया है.
योगदान देने वाले
ग्रैंट योशिदा, Google
केविन मौल, Google
वसीली बारानोव, Google
पीटर चेन, Google
लेवाना चेन, Google
खास जानकारी
जिन डिवाइसों पर एक से ज़्यादा एनवायरमेंट ब्लेंड मोड काम करते हैं उनके लिए, सिस्टम उपयोगकर्ता को इमर्सिव व्यू में अपने आस-पास का वातावरण दिखाने के लिए, पास-थ्रू कॉन्फ़िगरेशन उपलब्ध करा सकता है.
इस एक्सटेंशन की मदद से, ऐप्लिकेशन XrCompositionLayerPassthroughANDROID नाम की अतिरिक्त कम्पोज़िशन लेयर का इस्तेमाल करके, मनमुताबिक ज्यामिति पर पास-थ्रू टेक्सचर प्रोजेक्ट कर सकते हैं.
पासथ्रू लेयर की विशेषताओं के बारे में इन पैरामीटर से पता चलता है. इनमें प्रोजेक्शन को XrPassthroughLayerANDROID से दिखाया जाता है.
XrPosef pose;
XrVector3f scale;
float opacity;
XrPassthroughLayerANDROID layer;
फ़ुल स्क्रीन पासथ्रू के लिए, ऐप्लिकेशन एनवायरमेंट ब्लेंड मोड का इस्तेमाल कर सकते हैं.
सिस्टम की क्षमता की जांच करना
कोई ऐप्लिकेशन, xrGetSystemProperties को कॉल करते समय, XrSystemPassthroughLayerPropertiesANDROID स्ट्रक्चर को XrSystemProperties से जोड़कर, यह जांच कर सकता है कि सिस्टम, कॉम्पोज़िशन लेयर पासथ्रू मेश की सुविधा देता है या नहीं.
typedef struct XrSystemPassthroughLayerPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsPassthroughLayer;
uint32_t maxMeshIndexCount;
uint32_t maxMeshVertexCount;
} XrSystemPassthroughLayerPropertiesANDROID;
पैसे चुकाकर बने सदस्यों के ब्यौरे
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर तय नहीं किए गए हैं.supportsPassthroughLayerएकXrBool32है, जो यह बताता है कि मौजूदा सिस्टम, कंपोज़िशन लेयर पासथ्रू मेश के साथ काम करता है या नहीं.maxMeshIndexCountएकuint32_tहै, जो उन इंडेक्स की ज़्यादा से ज़्यादा संख्या दिखाता है जिन्हें पासथ्रू मेश के लिए स्वीकार किया जाएगा.maxMeshVertexCountएकuint32_tहै, जो पास-थ्रू मेश के लिए स्वीकार किए जाने वाले वर्टिसेस की ज़्यादा से ज़्यादा संख्या दिखाता है.
अगर supportsPassthroughLayer XR_FALSE दिखाता है, तो इसका मतलब है कि सिस्टम, कॉम्पोज़िशन लेयर पासथ्रू मेश के साथ काम नहीं करता. इसलिए, उसे xrCreatePassthroughLayerANDROID से XR_ERROR_FEATURE_UNSUPPORTED मिलेगा. supportsPassthroughLayer के XR_FALSE होने पर, ऐप्लिकेशन को कॉम्पोज़िशन लेयर पासथ्रू मेश का इस्तेमाल करने से बचना चाहिए.
अगर supportsPassthroughLayer से XR_TRUE मिलता है, तो इसका मतलब है कि सिस्टम में कॉम्पोज़िशन लेयर पासथ्रू मेश की सुविधा काम करती है. इस मामले में,
maxMeshIndexCount और maxMeshVertexCount, शून्य से बड़ी संख्या दिखाएंगे. किसी ऐप्लिकेशन को xrCreatePassthroughLayerANDROID और xrSetPassthroughLayerMeshANDROID को कॉल करते समय, पासथ्रू मेश सेट करने के लिए, maxMeshIndexCount और maxMeshVertexCount को ज़्यादा से ज़्यादा वैल्यू के तौर पर इस्तेमाल करना चाहिए. ऐसा न करने पर, मेश डेटा की वैल्यू तय सीमा से ज़्यादा होने का पता चलने के लिए, XR_ERROR_MESH_DATA_LIMIT_EXCEEDED_ANDROID दिखाया जा सकता है.
मान्य इस्तेमाल (इंप्लिसिट)
- XrSystemPassthroughLayerPropertiesANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_composition_layer_passthrough_meshएक्सटेंशन चालू होना ज़रूरी है typeकोXR_TYPE_SYSTEM_PASSTHROUGH_LAYER_PROPERTIES_ANDROIDहोना ज़रूरी हैnextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
पास-थ्रू लेयर का कंपोज़िशन
XrCompositionLayerPassthroughANDROID में, xrEndFrame को कॉल करते समय, ट्राएंगल मेश पर पासथ्रू टेक्सचर को रेंडर करने के लिए ज़रूरी जानकारी होती है. XrCompositionLayerPassthroughANDROID, XrFrameEndInfo में इस्तेमाल किए गए बेस स्ट्रक्चर XrCompositionLayerBaseHeader का दूसरा नाम है.
typedef struct XrCompositionLayerPassthroughANDROID {
XrStructureType type;
const void* next;
XrCompositionLayerFlags layerFlags;
XrSpace space;
XrPosef pose;
XrVector3f scale;
float opacity;
XrPassthroughLayerANDROID layer;
} XrCompositionLayerPassthroughANDROID;
पैसे चुकाकर बने सदस्यों के ब्यौरे
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर तय नहीं किए गए हैं.layerFlags, XrCompositionLayerFlags का बिटमास्क है. इसमें लेयर पर लागू होने वाले फ़्लैग के बारे में बताया गया है.spaceवह XrSpace है जिसमें लेयर मेश केposeका आकलन, समय के साथ किया जाता है.poseएकXrPosefहै, जोspaceके रेफ़रंस फ़्रेम में लेयर मेश की पोज़िशन और ओरिएंटेशन तय करता है.scaleएकXrVector3fहै, जो लेयर मेश के स्केल की जानकारी देता है.opacityएकfloatहै, जो पास-थ्रू टेक्सचर की ओपैसिटी को [0, 1] की रेंज में तय करता है.layer, XrPassthroughLayerANDROID है, जिसे पहले xrCreatePassthroughLayerANDROID ने बनाया था.
ऐप्लिकेशन, बनाए गए layer और XrPassthroughLayerMeshANDROID से मिले मेश के साथ XrCompositionLayerPassthroughANDROID स्ट्रक्चर बन सकता है.
XrCompositionLayerPassthroughANDROID का पॉइंटर, xrEndFrame में सबमिट किया जा सकता है. यह पॉइंटर, चुने गए लेयर के क्रम में, बेस स्ट्रक्चर XrCompositionLayerBaseHeader का पॉइंटर होता है. इससे रनटाइम को फ़ाइनल फ़्रेम आउटपुट में पासथ्रू लेयर को कंपोज करने का अनुरोध किया जाता है.
मान्य इस्तेमाल (इंप्लिसिट)
- XrCompositionLayerPassthroughANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_composition_layer_passthrough_meshएक्सटेंशन चालू होना ज़रूरी है typeकोXR_TYPE_COMPOSITION_LAYER_PASSTHROUGH_ANDROIDहोना ज़रूरी हैnextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिएlayerFlagsकी वैल्यू0या XrCompositionLayerFlagBits की वैल्यू के मान्य कॉम्बिनेशन में से कोई एक होनी चाहिएspaceयह XrSpace का मान्य हैंडल होना चाहिएlayerयह एक मान्य XrPassthroughLayerANDROID हैंडल होना चाहिएlayerऔरspace, दोनों को एक ही XrSession से बनाया, असाइन या फिर वापस पाया गया हो
पासथ्रू लेयर हैंडल बनाना
XrPassthroughLayerANDROID हैंडल, पासथ्रू लेयर को दिखाता है. यह XrCompositionLayerPassthroughANDROID के व्यवहार को तय करता है.
XR_DEFINE_HANDLE(XrPassthroughLayerANDROID)
कोई ऐप्लिकेशन, xrCreatePassthroughLayerANDROID को कॉल करके, XrPassthroughLayerANDROID हैंडल बना सकता है. दिखाए गए XrPassthroughLayerANDROID हैंडल का इस्तेमाल, एपीआई कॉल में किया जा सकता है.
XrResult xrCreatePassthroughLayerANDROID(
XrSession session,
const XrPassthroughLayerCreateInfoANDROID* createInfo,
XrPassthroughLayerANDROID* layer);
पैरामीटर की जानकारी
sessionएक XrSession है, जिसमें पासथ्रू लेयर बनाई जाएगी.createInfo, XrPassthroughLayerCreateInfoANDROID स्ट्रक्चर का पॉइंटर है. इसमें, पासथ्रू लेयर के शुरुआती पैरामीटर की जानकारी होती है. इस फ़ील्ड को XrPassthroughLayerMeshANDROID स्ट्रक्चर से भी जोड़ा जा सकता है, ताकि एक ही समय पर मेश सेट किया जा सके.layer, उस हैंडल का पॉइंटर है जिसमें बनाया गया XrPassthroughLayerANDROID दिखाया जाता है.
ऐप्लिकेशन को XrPassthroughLayerCreateInfoANDROID::vertexCapacity और
XrPassthroughLayerCreateInfoANDROID::indexCapacity में, पासथ्रू मेश इंडेक्स की संख्या तय करनी चाहिए. यह संख्या, xrGetSystemProperties को कॉल करते समय,
XrSystemPassthroughLayerPropertiesANDROID::maxMeshIndexCount और
XrSystemPassthroughLayerPropertiesANDROID::maxMeshVertexCount से मिली ज़्यादा से ज़्यादा वैल्यू से कम या उसके बराबर होनी चाहिए. अगर createInfo से तय किए गए मेश इंडेक्स की संख्या, ज़्यादा से ज़्यादा वैल्यू से ज़्यादा है, तो xrCreatePassthroughLayerANDROID, XR_ERROR_MESH_DATA_LIMIT_EXCEEDED_ANDROID गड़बड़ी दिखाएगा.
xrDestroyPassthroughLayerANDROID फ़ंक्शन का इस्तेमाल करके, XrPassthroughLayerANDROID हैंडल को आखिर में खाली करना ज़रूरी है.
मान्य इस्तेमाल (इंप्लिसिट)
- xrCreatePassthroughLayerANDROID को कॉल करने से पहले,
XR_ANDROID_composition_layer_passthrough_meshएक्सटेंशन चालू होना चाहिए sessionयह एक मान्य XrSession हैंडल होना चाहिएcreateInfoयह, XrPassthroughLayerCreateInfoANDROID स्ट्रक्चर के लिए मान्य पॉइंटर होना चाहिएlayerXrPassthroughLayerANDROID हैंडल का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_LIMIT_REACHEDXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_MESH_DATA_LIMIT_EXCEEDED_ANDROID
XrPassthroughLayerCreateInfoANDROID स्ट्रक्चर को इस तरह परिभाषित किया गया है:
typedef struct XrPassthroughLayerCreateInfoANDROID {
XrStructureType type;
const void* next;
uint32_t vertexCapacity;
uint32_t indexCapacity;
} XrPassthroughLayerCreateInfoANDROID;
पैसे चुकाकर बने सदस्यों के ब्यौरे
type, इस स्ट्रक्चर का XrStructureType है.next, NULL है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. XrPassthroughLayerMeshANDROID को अगली चेन में दिया जा सकता है, ताकि xrCreatePassthroughLayerANDROID को कॉल करते समय, पासथ्रू लेयर के लिए शुरुआती मेश तय किया जा सके.vertexCapacityएकuint32_tहै, जो इस लेयर के मेश के लिए वर्टिक्स बफ़र की ज़्यादा से ज़्यादा क्षमता को दिखाता है. अगर कोई वैल्यू नहीं दी गई है, तो0दिखेगा. अगर यह वैल्यू दी गई है, तो इस लेयर के लिए सेट किए गए किसी भी मेश की XrPassthroughLayerMeshANDROID::vertexCount वैल्यू,vertexCapacityसे कम या उसके बराबर होनी चाहिए.indexCapacityएकuint32_tहै, जो इस लेयर के मेश के लिए इंडेक्स बफ़र की ज़्यादा से ज़्यादा क्षमता दिखाता है. अगर कोई वैल्यू नहीं दी गई है, तो यह0होता है. अगर यह वैल्यू दी गई है, तो इस लेयर के लिए सेट किए गए किसी भी मेश का XrPassthroughLayerMeshANDROID::indexCount,indexCapacityसे कम या उसके बराबर होना चाहिए.
मान्य इस्तेमाल (इंप्लिसिट)
- XrPassthroughLayerCreateInfoANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_composition_layer_passthrough_meshएक्सटेंशन चाहिए कि चालू हो typeकोXR_TYPE_PASSTHROUGH_LAYER_CREATE_INFO_ANDROIDहोना ज़रूरी हैnextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए. यह भी देखें: XrPassthroughLayerMeshANDROID
ऐप्लिकेशन, पासथ्रू लेयर और उसमें मौजूद संसाधनों को रिलीज़ करने के लिए, xrDestroyPassthroughLayerANDROID फ़ंक्शन का इस्तेमाल कर सकता है.
XrResult xrDestroyPassthroughLayerANDROID(
XrPassthroughLayerANDROID layer);
पैरामीटर की जानकारी
layerवह XrPassthroughLayerANDROID है जिसे मिटाना है.
मान्य इस्तेमाल (इंप्लिसिट)
xrDestroyPassthroughLayerANDROIDको कॉल करने से पहले,XR_ANDROID_composition_layer_passthrough_meshएक्सटेंशन चालू होना ज़रूरी हैlayerयह एक मान्य XrPassthroughLayerANDROID हैंडल होना चाहिए
थ्रेड की सुरक्षा
layerऔर किसी भी चाइल्ड हैंडल का ऐक्सेस, बाहरी तौर पर सिंक किया जाना चाहिए
रिटर्न कोड
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALID
पास-थ्रू लेयर मेश सेट करना
कोई ऐप्लिकेशन, पासथ्रू लेयर के लिए मेश सेट करने के लिए, xrSetPassthroughLayerMeshANDROID फ़ंक्शन का इस्तेमाल कर सकता है.
XrResult xrSetPassthroughLayerMeshANDROID(
XrPassthroughLayerANDROID layer,
const XrPassthroughLayerMeshANDROID* mesh);
पैरामीटर की जानकारी
layerएक XrPassthroughLayerANDROID हैंडल है, जिसमें दिए गएmeshके साथ अपडेट करना है.mesh, XrPassthroughLayerMeshANDROID स्ट्रक्चर का एक पॉइंटर है, जिसमें मेश की जानकारी दी गई है.
ऐप्लिकेशन को XrPassthroughLayerMeshANDROID::vertexCount और
XrPassthroughLayerMeshANDROID::indexCount में, पासथ्रू मेश इंडेक्स की संख्या तय करनी चाहिए. यह संख्या, xrGetSystemProperties को कॉल करते समय, XrSystemPassthroughLayerPropertiesANDROID::maxMeshIndexCount और
XrSystemPassthroughLayerPropertiesANDROID::maxMeshVertexCount से मिली ज़्यादा से ज़्यादा वैल्यू से कम या उसके बराबर होनी चाहिए. अगर xrSetPassthroughLayerMeshANDROID से mesh की ओर से दिए गए मेश इंडेक्स की संख्या, ज़्यादा से ज़्यादा वैल्यू से ज़्यादा है, तो XR_ERROR_MESH_DATA_LIMIT_EXCEEDED_ANDROID दिखाया जाएगा.
अगर xrCreatePassthroughLayerANDROID का इस्तेमाल करके layer बनाते समय, XrPassthroughLayerCreateInfoANDROID::vertexCapacity और
XrPassthroughLayerCreateInfoANDROID::indexCapacity से मेश बफ़र की क्षमता तय की जाती है, तो mesh से तय किए गए मेश इंडेक्स की संख्या, क्षमता से ज़्यादा होने पर, xrSetPassthroughLayerMeshANDROID पर XR_ERROR_SIZE_INSUFFICIENT गड़बड़ी दिखेगी.
मान्य इस्तेमाल (इंप्लिसिट)
- xrSetPassthroughLayerMeshANDROID को कॉल करने से पहले,
XR_ANDROID_composition_layer_passthrough_meshएक्सटेंशन चालू होना ज़रूरी है layerयह एक मान्य XrPassthroughLayerANDROID हैंडल होना चाहिएmeshXrPassthroughLayerMeshANDROID के मान्य स्ट्रक्चर का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_LIMIT_REACHEDXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_MESH_DATA_LIMIT_EXCEEDED_ANDROID
XrPassthroughLayerMeshANDROID स्ट्रक्चर को इस तरह परिभाषित किया गया है:
typedef struct XrPassthroughLayerMeshANDROID {
XrStructureType type;
const void* next;
XrWindingOrderANDROID windingOrder;
uint32_t vertexCount;
const XrVector3f* vertices;
uint32_t indexCount;
const uint16_t* indices;
} XrPassthroughLayerMeshANDROID;
पैसे चुकाकर बने सदस्यों के ब्यौरे
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.windingOrder, मेश त्रिभुजों का XrWindingOrderANDROID है. इसका इस्तेमाल, मेश को रेंडर करते समय बैकफ़ेस कलिंग के लिए किया जाएगा.vertexCountएकuint32_tहै, जो मेश में वर्टिसेस की संख्या दिखाता है. XrPassthroughLayerCreateInfoANDROID::vertexCapacity के लिए वैल्यू तय करने पर,vertexCountकोvertexCapacityसे कम या उसके बराबर होना चाहिए.vertices,XrVector3fके कलेक्शन का पॉइंटर है. इसमें ट्राएंगल मेश के वर्टिक्स की पोज़िशन होती हैं.
indexCountएकuint32_tहै, जो त्रिभुज मेश में इंडेक्स की संख्या दिखाता है. अगर पिछलेindexCount % 3इंडेक्स हैं, तो उन्हें नहीं दिखाया जाएगा. XrPassthroughLayerCreateInfoANDROID::indexCapacity तय करने पर,indexCountकोindexCapacityसे कम या उसके बराबर होना चाहिए.indices,uint16_tके कलेक्शन का पॉइंटर है. इसमें त्रिभुज मेश के इंडेक्स शामिल होते हैं.
मान्य इस्तेमाल (इंप्लिसिट)
- XrPassthroughLayerMeshANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_composition_layer_passthrough_meshएक्सटेंशन चालू होना ज़रूरी है typeकोXR_TYPE_PASSTHROUGH_LAYER_MESH_ANDROIDहोना ज़रूरी हैnextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिएwindingOrderXrWindingOrderANDROID की वैल्यू मान्य होनी चाहिए- अगर
vertexCount,0, verticesनहीं है, तो यह ज़रूरी है कि यहvertexCountXrVector3f स्ट्रक्चर के ऐरे का पॉइंटर हो - अगर
indexCount,0, indicesनहीं है, तोindexCount uint16_tवैल्यू के ऐरे का पॉइंटर होना चाहिए
XrWindingOrderANDROID एनोटेशन से, किसी मेश के त्रिभुजों के विंडिंग ऑर्डर की पहचान की जाती है. इसका इस्तेमाल, पासथ्रू लेयर के मेश को रेंडर करते समय, बैकफ़ेस कलिंग के लिए रनटाइम करता है.
typedef enum XrWindingOrderANDROID {
XR_WINDING_ORDER_UNKNOWN_ANDROID = 0,
XR_WINDING_ORDER_CW_ANDROID = 1,
XR_WINDING_ORDER_CCW_ANDROID = 2
} XrWindingOrderANDROID;
एनोमेरेंट की जानकारी
XR_WINDING_ORDER_UNKNOWN_ANDROID— मेश के त्रिभुजों के विंडिंग ऑर्डर की जानकारी नहीं है.XR_WINDING_ORDER_CW_ANDROID— मेश के त्रिभुजों को घुमाने का क्रम, घड़ी की सुई के उलट दिशा में होता है.XR_WINDING_ORDER_CCW_ANDROID— मेश के त्रिभुजों को घुमाने का क्रम, घड़ी की विपरीत दिशा में होता है.
पासथ्रू लेयर कंपोज़िशन के लिए कोड का उदाहरण
यहां दिए गए उदाहरण में, पासथ्रू लेयर बनाने और उसे कॉम्पोज़िट करने में इस्तेमाल करने का तरीका बताया गया है.
XrInstance instance; // previously initialized
XrSystemId systemId; // previously initialized
XrSession session; // previously initialized
XrSpace space; // previously initialized
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreatePassthroughLayerANDROID xrCreatePassthroughLayerANDROID; // previously initialized
PFN_xrDestroyPassthroughLayerANDROID xrDestroyPassthroughLayerANDROID; // previously initialized
PFN_xrSetPassthroughLayerMeshANDROID xrSetPassthroughLayerMeshANDROID; // previously initialized
// Inspect passthrough mesh system properties
XrSystemPassthroughLayerPropertiesANDROID passthroughLayerSystemProperties{
XR_TYPE_SYSTEM_PASSTHROUGH_LAYER_PROPERTIES_ANDROID};
XrSystemProperties systemProperties{
XR_TYPE_SYSTEM_PROPERTIES, &passthroughLayerSystemProperties};
CHK_XR(xrGetSystemProperties(instance, systemId, &systemProperties));
if (!passthroughLayerSystemProperties.supportsPassthroughLayer) {
// the system does not support composite layer passthrough mesh.
return;
}
// The initial mesh for the layer.
XrPassthroughLayerMeshANDROID mesh = {
.type = XR_TYPE_PASSTHROUGH_LAYER_MESH_ANDROID,
.windingOrder = XR_WINDING_ORDER_CW_ANDROID,
.vertexCount = 4,
.vertices = {
{ 0, 0, 0 }, { 0, 1, 0 }, { 1, 1, 0 }, { 1, 0, 0 }
},
.indexCount = 6,
.indices = {
0, 1, 2,
0, 2, 3
},
};
// Create the layer. Layers are expected to persist across frames.
XrPassthroughLayerCreateInfoANDROID create_info = {
.type = XR_TYPE_PASSTHROUGH_LAYER_CREATE_INFO_ANDROID,
.next = &mesh,
.vertexCapacity = 0,
.indexCapacity = 0,
};
XrPassthroughLayerANDROID layer;
CHK_XR(xrCreatePassthroughLayerANDROID(session, &create_info, &layer));
// Create a composition layer. Composition layers are submitted per frame.
XrCompositionLayerPassthroughANDROID passthrough_layer = {
.type = XR_TYPE_COMPOSITION_LAYER_PASSTHROUGH_ANDROID,
.next = nullptr,
.layerFlags = 0,
.space = space,
.pose = {
.orientation = { 0.0f, 0.0f, 0.0f, 1.0f }
.position = { 0.0f, 0.0f, 0.0f }
},
.scale = { 1.0f, 1.0f, 1.0f },
.opacity = 1.0f,
.layer = layer
};
while (1) {
// ...
// For every frame in frame loop
// ...
// Submit composition layer in xrEndFrame.
std::vector<XrCompositionLayerBaseHeader*> layers = {
...,
&passthrough_layer,
...,
};
XrFrameEndInfo end_frame_info = { XR_TYPE_FRAME_END_INFO, nullptr };
end_frame_info.layerCount = (uint32_t)layers.size();
end_frame_info.layers = layers.data();
CHK_XR(xrEndFrame(session, &end_frame_info));
// Update the layer. Results can be seen the next time a passthrough composition
// layer is submitted.
mesh.indexCount = 9;
const uint16_t new_index_buffer[] = {
0, 1, 2,
0, 2, 3,
0, 1, 2
};
mesh.indexBuffer = &new_index_buffer[0];
CHK_XR(xrSetPassthroughLayerMeshANDROID(&layer, &mesh));
// ...
// Finish frame loop
// ...
}
// Clean up.
CHK_XR(xrDestroyPassthroughLayerANDROID(layer));
नए ऑब्जेक्ट टाइप
नई Enum Constant
XrObjectType एनोटेशन को इनके साथ जोड़ा गया है:
XR_OBJECT_TYPE_PASSTHROUGH_LAYER_ANDROID
XrStructureType एनोटेशन को इनके साथ जोड़ा गया है:
XR_TYPE_PASSTHROUGH_LAYER_CREATE_INFO_ANDROIDXR_TYPE_PASSTHROUGH_LAYER_MESH_ANDROIDXR_TYPE_COMPOSITION_LAYER_PASSTHROUGH_ANDROIDXR_TYPE_SYSTEM_PASSTHROUGH_LAYER_PROPERTIES_ANDROID
XrResult एनोटेशन को इनके साथ जोड़ा गया है:
XR_ERROR_MESH_DATA_LIMIT_EXCEEDED_ANDROID
नए Enums
नए स्ट्रक्चर
- XrPassthroughLayerCreateInfoANDROID
- XrPassthroughLayerMeshANDROID
- XrCompositionLayerPassthroughANDROID
- XrSystemPassthroughLayerPropertiesANDROID
नए फ़ंक्शन
- xrCreatePassthroughLayerANDROID
xrDestroyPassthroughLayerANDROID- xrSetPassthroughLayerMeshANDROID
समस्याएं
वर्शन का इतिहास
- पहला बदलाव, 11-09-2024 (लेवाना चेन)
- एक्सटेंशन के बारे में शुरुआती जानकारी
OpenXR™ और OpenXR लोगो, The Khronos Group Inc. के मालिकाना हक वाले ट्रेडमार्क हैं. ये चीन, यूरोपीय संघ, जापान, और यूनाइटेड किंगडम में ट्रेडमार्क के तौर पर रजिस्टर किए गए हैं.