নাম স্ট্রিং
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 ব্যবহার করার আগে সক্রিয় করতে হবে -
type
XR_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 ব্যবহার করার আগে সক্রিয় করতে হবে -
type
XR_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 ব্যবহার করার আগে সক্রিয় করতে হবে -
type
XR_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 ব্যবহার করার আগে সক্রিয় করতে হবে -
type
XR_TYPE_PASSTHROUGH_LAYER_MESH_ANDROID
হতে হবে -
next
অবশ্যইNULL
বা একটি কাঠামোর চেইনের পরবর্তী কাঠামোর জন্য একটি বৈধ পয়েন্টার হতে হবে -
windingOrder
একটি বৈধ XrWindingOrderANDROID মান হতে হবে -
vertexCount
0, vertices
অবশ্যইvertexCount
XrVector3f স্ট্রাকচারের একটি অ্যারের নির্দেশক হতে হবে - যদি
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 ধ্রুবক
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 (লেভানা চেন)
- প্রাথমিক এক্সটেনশন বর্ণনা
নাম স্ট্রিং
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 ব্যবহার করার আগে সক্রিয় করতে হবে -
type
XR_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 ব্যবহার করার আগে সক্রিয় করতে হবে -
type
XR_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 ব্যবহার করার আগে সক্রিয় করতে হবে -
type
XR_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 ব্যবহার করার আগে সক্রিয় করতে হবে -
type
XR_TYPE_PASSTHROUGH_LAYER_MESH_ANDROID
হতে হবে -
next
অবশ্যইNULL
বা একটি কাঠামোর চেইনের পরবর্তী কাঠামোর জন্য একটি বৈধ পয়েন্টার হতে হবে -
windingOrder
একটি বৈধ XrWindingOrderANDROID মান হতে হবে -
vertexCount
0, vertices
অবশ্যইvertexCount
XrVector3f স্ট্রাকচারের একটি অ্যারের নির্দেশক হতে হবে - যদি
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 ধ্রুবক
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 (লেভানা চেন)
- প্রাথমিক এক্সটেনশন বর্ণনা