ওপেনজিএল সামঞ্জস্যতা, নামকরণের সম্মেলন এবং এআরবি বনাম এক্সটি


14

আমি ভেবেছিলাম যে ওপেনজিএল নামকরণের কনভেনশন এবং এক্সটেনশানগুলি কীভাবে কাজ করেছে সে সম্পর্কে আমি সাধারণ ধারণা তৈরি করেছি, যতক্ষণ না আমি আমাকে বিভ্রান্ত করে এমন কোনও মামলায় হোঁচট খাই।


এখানে আমার বোঝাপড়া এতদূর:

প্রত্যয় নেই - যেমন glGenBuffers()। এই ফাংশনটি মূল প্রোফাইলের একটি অংশ। উইকি পাতা আমাকে বলে যে, এই কোর প্রফাইল সংস্করণ 1.5 থেকে শুরু যোগ করা হয়েছিল।

এআরবি - যেমন glGenBuffersARB()। এই ফাংশনটি মানকযুক্ত GL_ARB_vertex_buffer_objectএক্সটেনশনের অংশ । বৈশিষ্ট এই এক্সটেনশানের পরিষ্কারভাবে ঘোষণা GenBuffersARB()"নতুন পদ্ধতি এবং কার্যাবলী" বিভাগে। "নির্ভরতা" বিভাগটি আমাকে বলেছে যে হার্ডওয়্যারটি যদি এক্সটেনশানটিকে সমর্থন করে তবে আমি সম্ভবত এটি 1.4+ প্রসঙ্গ থেকে অ্যাক্সেস করতে পারি।

এক্সট - এগুলি বিক্রেতা-নির্দিষ্ট এক্সটেনশন এবং ফাংশন যা কেবলমাত্র কিছু বিক্রেতারা সমর্থন করতে পারেন। ভার্টেক্স বাফার অবজেক্টের রেজিস্ট্রিতে কোনও এক্সট এক্সটেনশন আছে বলে মনে হচ্ছে না।


আমার বোধগম্যতা এখানে ভেঙে গেছে এখানে:

glGenFramebuffers, যেমন উইকি শো, 3.0 কোর যুক্ত করা হয়েছে।

এখন আমি 3.0 এর চেয়ে কম মূল প্রোফাইল সংস্করণে ফ্রেম বাফার বৈশিষ্ট্যগুলি অ্যাক্সেস করতে চাই। তাই আমি এটি একটি এক্সটেনশন হিসাবে ব্যবহার করতে চাই। অনুমানের রেজিস্ট্রি আমাকে বলেছে যে দুটি উপলব্ধ এক্সটেনশন রয়েছে - এআরবি এবং এক্সটি

প্রশ্ন 1 - যদি কোনও এআরবি এক্সটেনশান উপস্থিত থাকে তবে একটি এক্সটি এক্সটেনশন কেন বিদ্যমান? আপনি কি সবসময় বিক্রেতা-নির্দিষ্ট কোনওটির চেয়ে মানককে বেছে নেবেন না?

"নতুন পদ্ধতি এবং ফাংশন" বিভাগে এআরবি সুনির্দিষ্ট দৃষ্টিভঙ্গি আমাকে বলে যে এক্সটেনশনটি GenRenderbuffers()ফাংশনটি সংজ্ঞায়িত করে । এবার কোনও এআরবি প্রত্যয় নেই। GLEW এর মোটেও কোনও ফাংশন প্রোটোটাইপ নেই glGenRenderbuffersARB()। রহস্যময়।

GenRenderbuffersEXT()এক্সট স্পেকটির তবে নতুন ফাংশন বিভাগে একটি ফাংশন রয়েছে এবং জিএলইউও রয়েছে glGenRenderbuffersEXT()

প্রশ্ন 2 - কোনও এআরবি প্রত্যয় কেন একটি এক্সটি প্রত্যয় আছে? এআরবি ফাংশন এবং মূল ফাংশনগুলির নাম একই হওয়ায় এআরবির পক্ষে এটি কীভাবে কাজ করবে?

প্রশ্ন 3 - আমি শেষ পর্যন্ত একটি 1.4 প্রোফাইল থেকে ফ্রেমবফার বৈশিষ্ট্যগুলি চাই। আমি কোন এক্সটেনশন এবং কোন ফাংশন-সেটটি ব্যবহার করব যাতে আমি সর্বোচ্চ হার্ডওয়্যার সামঞ্জস্যতা কভারেজ পাই?

উত্তর:


9

প্রশ্ন 1 - সাধারণত দুই বা তার বেশি বিক্রেতাদের মধ্যে সহযোগিতা হিসাবে EXT সংস্করণটি প্রথম আসে। এআরবি এক্সটেনশনের জন্য খ্রোনসের ভোটদানকারী সদস্যদের মধ্যে আরও আলোচনার প্রয়োজন রয়েছে এবং অনুমোদনের আগে এক্সটি সংস্করণ থেকে পরিবর্তন আসতে পারে। জিএল_আরবি_ডাইরেক্ট_স্টেট_অ্যাকসেস এক্সটেনশানটি দেখুন যা জিএল_এক্স_ডায়ারেক্ট_স্টেট_অ্যাক্সেসের সাথে তুলনা করে অনেক পরিবর্তন হয়েছে।

প্রশ্ন 2 - GL_ARB_framebuffer_object এক্সটেনশনের ইস্যু বিভাগে ফাংশনগুলিতে কেন আরবি প্রত্যয় নেই:

(৮) এই এক্সটেনশনে নতুন টোকেন এবং এন্ট্রি পয়েন্টগুলিতে অন্যান্য এআরবি এক্সটেনশনের মতো প্রত্যয় কেন হয় না?

   RESOLVED: Unlike most ARB extensions, this is a strict subset of
   functionality already approved in OpenGL 3.0. This extension
   exists only to support that functionality on older hardware that
   cannot implement a full OpenGL 3.0 driver. Since there are no
   possible behavior changes between the ARB extension and core
   features, source code compatibility is improved by not using
   suffixes on the extension.

প্রশ্ন 3 - আপনি যদি জিএল সংস্করণ 3.0 এর চেয়ে কম প্রেক্ষাপটে ফ্রেমবফার অবজেক্ট ব্যবহার করতে চান তবে আপনাকে এক্সটেনশন স্ট্রিংটি দেখতে হবে:

  1. যদি GL_ARB_framebuffer_object সমর্থিত হয় তবে নন এআরবি ফাংশন ব্যবহার করুন।
  2. যদি কেবল GL_EXT_framebuffer_object সমর্থিত হয় তবে EXT ফাংশনগুলি ব্যবহার করুন।
  3. যদি উভয়ই সম্প্রসারণ সমর্থিত না হয় তবে আপনাকে পিফারগুলির মতো ওএস স্তরের অফস্ক্রিন রেন্ডারিংয়ে ফিরে যেতে হবে।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.