নাম স্ট্রিং
XR_ANDROID_composition_layer_passthrough_mesh
এক্সটেনশন টাইপ
ইনস্ট্যান্স এক্সটেনশন
নিবন্ধিত এক্সটেনশন নম্বর
463
রিভিশন
1
এক্সটেনশন এবং সংস্করণ নির্ভরতা
সর্বশেষ সংশোধিত তারিখ
2024-09-18
আইপি স্ট্যাটাস
কোন পরিচিত আইপি দাবি.
অবদানকারী
গ্রান্ট ইয়োশিদা, গুগল
কেভিন মৌল, গুগল
ভ্যাসিলি বারানভ, গুগল
পিটার চেন, গুগল
লেভানা চেন, গুগল
ওভারভিউ
একাধিক এনভায়রনমেন্ট ব্লেন্ড মোড সমর্থন করে এমন ডিভাইসগুলির জন্য, ব্যবহারকারীকে একটি নিমজ্জনশীল দৃশ্য থেকে তাদের শারীরিক পরিবেশ দেখানোর জন্য সিস্টেমটি পাসথ্রু কনফিগারেশন প্রদান করতে পারে।
এই এক্সটেনশনটি একটি অতিরিক্ত রচনা স্তর 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 ডেটা ফেরত দেওয়া হতে পারে যা আমাকে সমর্থন করতে পারে। সীমা
বৈধ ব্যবহার (অন্তর্নিহিত)
-
XR_ANDROID_composition_layer_passthrough_meshএক্সটেনশনটি অবশ্যই XrSystemPassthroughLayerPropertiesANDROID ব্যবহার করার আগে সক্রিয় করতে হবে -
typeXR_TYPE_SYSTEM_PASSTHROUGH_LAYER_PROPERTIES_ANDROIDহতে হবে -
nextঅবশ্যইNULLবা একটি কাঠামোর চেইনের পরবর্তী কাঠামোর জন্য একটি বৈধ পয়েন্টার হতে হবে
পাসথ্রু লেয়ার কম্পোজিশন
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- এ একটি পয়েন্টার হিসেবে জমা দেওয়া যেতে পারে , নির্বাচিত লেয়ার অর্ডারে, চূড়ান্ত ফ্রেমের আউটপুটে পাসথ্রু লেয়ার কম্পোজিট করার জন্য রানটাইমকে অনুরোধ করতে।
বৈধ ব্যবহার (অন্তর্নিহিত)
-
XR_ANDROID_composition_layer_passthrough_meshএক্সটেনশনটি অবশ্যই XrCompositionLayerPassthroughANDROID ব্যবহার করার আগে সক্রিয় করতে হবে -
typeXR_TYPE_COMPOSITION_LAYER_PASSTHROUGH_ANDROIDহতে হবে -
nextঅবশ্যইNULLবা একটি কাঠামোর চেইনের পরবর্তী কাঠামোর জন্য একটি বৈধ পয়েন্টার হতে হবে -
layerFlagsঅবশ্যই0বা XrCompositionLayerFlagBits মানগুলির একটি বৈধ সমন্বয় হতে হবে -
spaceঅবশ্যই একটি বৈধ XrSpace হ্যান্ডেল হতে হবে -
layerঅবশ্যই একটি বৈধ XrPassthroughLayerANDROID হ্যান্ডেল হতে হবে -
layerএবংspaceউভয়ই একই XrSession থেকে তৈরি, বরাদ্দ করা বা পুনরুদ্ধার করা আবশ্যক
একটি পাসথ্রু লেয়ার হ্যান্ডেল তৈরি করুন
XrPassthroughLayerANDROID হ্যান্ডেল একটি পাসথ্রু স্তর উপস্থাপন করে যা XrCompositionLayerPassthroughANDROID- এর আচরণকে সংজ্ঞায়িত করে।
XR_DEFINE_HANDLE(XrPassthroughLayerANDROID)
একটি অ্যাপ্লিকেশন xrCreatePassthroughLayerANDROID কল করে একটি XrPassthroughLayerANDROID হ্যান্ডেল তৈরি করতে পারে ৷ ফিরে আসা XrPassthroughLayerANDROID হ্যান্ডেলটি পরবর্তীতে API কলগুলিতে ব্যবহার করা যেতে পারে ।
XrResult xrCreatePassthroughLayerANDROID(
XrSession session,
const XrPassthroughLayerCreateInfoANDROID* createInfo,
XrPassthroughLayerANDROID* layer);
পরামিতি বিবরণ
-
sessionহল একটি XrSession যার জন্য পাসথ্রু স্তর তৈরি করা হবে। -
createInfoহল একটি XrPassthroughLayerCreateInfoANDROID কাঠামোর একটি পয়েন্টার যা প্রাথমিক পাসথ্রু লেয়ার প্যারামিটারগুলি নির্দিষ্ট করে৷ একই সময়ে জাল সেট করার জন্য এই ক্ষেত্রটিকে XrPassthroughLayerMeshANDROID কাঠামোতেও চেইন করা যেতে পারে । -
layerহল একটি হ্যান্ডেলের একটি পয়েন্টার যেখানে তৈরি করা XrPassthroughLayerANDROID ফেরত দেওয়া হয়।
অ্যাপ্লিকেশানটি XrPassthroughLayerCreateInfoANDROID ::vertexCapacity এবং XrPassthroughLayerCreateInfoANDROID::indexCapacity XrSystemPassthroughLayerROIDEXANDEX XrSystemPassthroughLayerPropertiesANDROID::maxMeshVertexCount যখন xrGetSystemProperties কল করা হয়। xrCreatePassthroughLayerANDROID একটি XR_ERROR_MESH_DATA_LIMIT_EXCEEDED_ANDROID ত্রুটি প্রদান করবে যদি createInfo দ্বারা সংজ্ঞায়িত জাল সূচকের সংখ্যা সর্বাধিক মানের থেকে বেশি হয়।
XrPassthroughLayerANDROID হ্যান্ডেলটি অবশ্যই xrDestroyPassthroughLayerANDROID ফাংশন ব্যবহার করে মুক্ত করতে হবে ।
বৈধ ব্যবহার (অন্তর্নিহিত)
-
XR_ANDROID_composition_layer_passthrough_meshএক্সটেনশনটি অবশ্যই xrCreatePassthroughLayerANDROID কল করার আগে সক্রিয় করতে হবে -
sessionঅবশ্যই একটি বৈধ XrSession হ্যান্ডেল হতে হবে -
createInfoঅবশ্যই একটি বৈধ XrPassthroughLayerCreateInfoANDROID কাঠামোর একটি নির্দেশক হতে হবে -
layerঅবশ্যই একটি XrPassthroughLayerANDROID হ্যান্ডেলের একটি পয়েন্টার হতে হবে
রিটার্ন কোড
-
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_LIMIT_REACHED -
XR_ERROR_SIZE_INSUFFICIENT -
XR_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 বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। xrCreatePassthroughLayerMeshANDROID-কে কল করার সময় পাসথ্রু লেয়ারের জন্য একটি প্রাথমিক জাল নির্দিষ্ট করতে পরবর্তী চেইনে XrPassthroughLayerMeshANDROID প্রদান করা যেতে পারে । -
vertexCapacityহল একটিuint32_tযা এই স্তরের জালের জন্য ভার্টেক্স বাফারের সর্বোচ্চ ক্ষমতা, অথবা0যদি অনির্দিষ্ট থাকে। নির্দিষ্ট করা থাকলে, এই স্তরের জন্য যে কোনো জালের সেটের XrPassthroughLayerMeshANDROID::vertexCount অবশ্যইvertexCapacityএর কম বা সমান হতে হবে । -
indexCapacityহল একটিuint32_tযা এই স্তরের জালের জন্য সূচক বাফারের সর্বোচ্চ ক্ষমতা, অথবা যদি অনির্দিষ্ট না থাকে তাহলে0। নির্দিষ্ট করা থাকলে, এই স্তরের জন্য যে কোনো জালের সেটের XrPassthroughLayerMeshANDROID::indexCount অবশ্যইindexCapacityএর কম বা সমান হতে হবে।
বৈধ ব্যবহার (অন্তর্নিহিত)
-
XR_ANDROID_composition_layer_passthrough_meshএক্সটেনশনটি অবশ্যই XrPassthroughLayerCreateInfoANDROID ব্যবহার করার আগে সক্রিয় করতে হবে -
typeXR_TYPE_PASSTHROUGH_LAYER_CREATE_INFO_ANDROIDহতে হবে -
nextঅবশ্যইNULLবা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর জন্য একটি বৈধ পয়েন্টার হতে হবে। আরও দেখুন: XrPassthroughLayerMeshANDROID
পাসথ্রু স্তর এবং অন্তর্নিহিত সংস্থান প্রকাশ করতে একটি অ্যাপ্লিকেশন xrDestroyPassthroughLayerANDROID ফাংশন ব্যবহার করতে পারে ।
XrResult xrDestroyPassthroughLayerANDROID(
XrPassthroughLayerANDROID layer);
পরামিতি বিবরণ
-
layerহল XrPassthroughLayerANDROID ধ্বংস করা।
বৈধ ব্যবহার (অন্তর্নিহিত)
-
XR_ANDROID_composition_layer_passthrough_meshএক্সটেনশনটি অবশ্যইxrDestroyPassthroughLayerANDROIDকল করার আগে সক্রিয় করতে হবে -
layerঅবশ্যই একটি বৈধ XrPassthroughLayerANDROID হ্যান্ডেল হতে হবে
থ্রেড নিরাপত্তা
-
layerঅ্যাক্সেস, এবং যে কোনও শিশু হ্যান্ডেলগুলিকে বাহ্যিকভাবে সিঙ্ক্রোনাইজ করতে হবে ৷
রিটার্ন কোড
-
XR_SUCCESS
-
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_ERROR_RUNTIME_FAILURE -
XR_ERROR_HANDLE_INVALID
পাসথ্রু লেয়ার মেশ সেট করুন
একটি পাসথ্রু স্তরের জন্য জাল সেট করতে একটি অ্যাপ্লিকেশন xrSetPassthroughLayerMeshANDROID ফাংশন ব্যবহার করতে পারে ।
XrResult xrSetPassthroughLayerMeshANDROID(
XrPassthroughLayerANDROID layer,
const XrPassthroughLayerMeshANDROID* mesh);
পরামিতি বিবরণ
-
layerহল একটি XrPassthroughLayerANDROID হ্যান্ডেল যাতে প্রদত্তmeshসাথে আপডেট করা হয়।-
meshহল একটি XrPassthroughLayerMeshANDROID কাঠামোর একটি পয়েন্টার যা জালের তথ্য নির্দিষ্ট করে।
-
অ্যাপ্লিকেশানটি XrPassthroughLayerMeshANDROID::vertexCount এবং XrPassthroughLayerMeshANDROID::indexCount- এ XrSystemPassthroughLayerPropertiesANDROID::maxMeshCountCount- এর দ্বারা প্রত্যাবর্তিত সর্বাধিক মানের থেকে কম বা সমান পাসথ্রু মেশ সূচকের সংখ্যা উল্লেখ করা উচিত । XrSystemPassthroughLayerPropertiesANDROID::maxMeshVertexCount যখন xrGetSystemProperties কল করা হয়। যদি xrSetPassthroughLayerMeshANDROID থেকে mesh দ্বারা প্রদত্ত জাল সূচকের সংখ্যা সর্বাধিক মানের থেকে বেশি হয়, তাহলে XR_ERROR_MESH_DATA_LIMIT_EXCEEDED_ANDROID ফেরত দেওয়া হবে।
যদি জাল বাফার ক্ষমতা XrPassthroughLayerCreateInfoANDROID::vertexCapacity এবং XrPassthroughLayerCreateInfoANDROID::indexCapacity দ্বারা xrCreatePassthroughLayerANDROID ব্যবহার করে layer তৈরি করার সময় নির্দিষ্ট করা হয়, তাহলে XR_ERROR_SIZE_INSUFFICIENT ত্রুটি ফেরত হবে xrSetPassthroughLayerMeshANDROID যদি mesh দ্বারা সংজ্ঞায়িত জাল সূচকের গণনা ক্ষমতার চেয়ে বেশি হয়।
বৈধ ব্যবহার (অন্তর্নিহিত)
-
XR_ANDROID_composition_layer_passthrough_meshএক্সটেনশনটি অবশ্যই xrSetPassthroughLayerMeshANDROID কল করার আগে সক্রিয় করতে হবে -
layerঅবশ্যই একটি বৈধ XrPassthroughLayerANDROID হ্যান্ডেল হতে হবে -
meshঅবশ্যই একটি বৈধ XrPassthroughLayerMeshANDROID কাঠামোর একটি পয়েন্টার হতে হবে
রিটার্ন কোড
-
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_LIMIT_REACHED -
XR_ERROR_SIZE_INSUFFICIENT -
XR_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এর একটি অ্যারের একটি নির্দেশক যাতে ত্রিভুজ জালের সূচক রয়েছে।
বৈধ ব্যবহার (অন্তর্নিহিত)
-
XR_ANDROID_composition_layer_passthrough_meshএক্সটেনশনটি অবশ্যই XrPassthroughLayerMeshANDROID ব্যবহার করার আগে সক্রিয় করতে হবে -
typeXR_TYPE_PASSTHROUGH_LAYER_MESH_ANDROIDহতে হবে -
nextঅবশ্যইNULLবা একটি কাঠামোর চেইনের পরবর্তী কাঠামোর জন্য একটি বৈধ পয়েন্টার হতে হবে -
windingOrderএকটি বৈধ XrWindingOrderANDROID মান হতে হবে -
vertexCount0, verticesঅবশ্যইvertexCountXrVector3f স্ট্রাকচারের একটি অ্যারের নির্দেশক হতে হবে - যদি
indexCount0, 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 ধ্রুবক
XrObjectType গণনা এর সাথে প্রসারিত করা হয়েছে:
-
XR_OBJECT_TYPE_PASSTHROUGH_LAYER_ANDROID
XrStructureType গণনা এর সাথে প্রসারিত করা হয়েছে:
-
XR_TYPE_PASSTHROUGH_LAYER_CREATE_INFO_ANDROID -
XR_TYPE_PASSTHROUGH_LAYER_MESH_ANDROID -
XR_TYPE_COMPOSITION_LAYER_PASSTHROUGH_ANDROID -
XR_TYPE_SYSTEM_PASSTHROUGH_LAYER_PROPERTIES_ANDROID
XrResult গণনা এর সাথে বর্ধিত করা হয়েছে:
-
XR_ERROR_MESH_DATA_LIMIT_EXCEEDED_ANDROID
নতুন Enums
নতুন কাঠামো
- XrPassthroughLayerCreateInfoANDROID
- XrPassthroughLayerMeshANDROID
- XrCompositionLayerPassthroughANDROID
- XrSystemPassthrough LayerPropertiesANDROID
নতুন ফাংশন
- xrCreatePassthroughLayerANDROID
-
xrDestroyPassthroughLayerANDROID - xrSetPassthroughLayerMeshANDROID
ইস্যু
সংস্করণ ইতিহাস
- সংশোধন 1, 2024-09-11 (লেভানা চেন)
- প্রাথমিক এক্সটেনশন বর্ণনা
OpenXR™ এবং OpenXR লোগো হল The Khronos Group Inc. এর মালিকানাধীন ট্রেডমার্ক এবং চীন, ইউরোপীয় ইউনিয়ন, জাপান এবং যুক্তরাজ্যে ট্রেডমার্ক হিসেবে নিবন্ধিত।