ওপেনএল-এর চারটি আলাদা আলাদা সংস্করণ রয়েছে, মোবাইল ডিভাইস এবং এম্বেড থাকা সিস্টেমগুলির জন্য সংস্করণ গণনা না করে (ওপেনজিএল | ইএস) এবং জাভাস্ক্রিপ্ট (ওয়েবজিএল) এর মাধ্যমে ওয়েব। ডাইরেক্ট 3 ডি 11 যেমন ডাইরেক্ট 3 ডি 8 এর চেয়ে আলাদা আলাদা আলাদা পদ্ধতি করে থাকে, তেমনি ওপেনজিএল 3-এও ওপেনজিএল 1 এর চেয়ে আলাদা আলাদা জিনিস রয়েছে। বড় পার্থক্যটি হ'ল ওপেনজিএল সংস্করণগুলি বেশিরভাগ পুরানো সংস্করণগুলিতে কেবল অ্যাড-অন (তবে নয়) সম্পূর্ণরূপে)।
ওপেনজিএলের বিভিন্ন সংস্করণ এবং সংস্করণগুলির শীর্ষে, মূল ওপেনজিএল প্রোফাইলগুলির ধারণাটিও যুক্ত করেছে। যথা: সামঞ্জস্যতা প্রোফাইল (যা পুরানো সংস্করণগুলি থেকে APIs জন্য সমর্থন সক্ষম করে) এবং কোর প্রোফাইল (যা সেই পুরানো API গুলি অক্ষম করে)। ভালো জিনিস glBegin
কেবল কাজ করে না যখন আপনি কোর প্রোফাইল ব্যবহার করতে পারে তবে আপনি উপযুক্ততা প্রোফাইল ব্যবহার করবে যখন (যা ডিফল্ট)।
আরও একটি বড় জটিলতা হিসাবে, আপনি যখন কোর প্রোফাইল ব্যবহার করছেন তখন ওপেনজিএলের কিছু বাস্তবায়ন (অন্যদের মধ্যে অ্যাপলের মতো) কেবল নতুন ওপেনজিএল বৈশিষ্ট্যগুলিকে সক্ষম করবে। এর অর্থ হল যে নতুন এপিআইগুলি ব্যবহার করতে আপনাকে অবশ্যই পুরানো API গুলি ব্যবহার বন্ধ করতে হবে ।
তারপরে আপনি টিউটোরিয়ালগুলির জন্য বেশ কয়েকটি বিভ্রান্তিকর দৃশ্যের সাথে শেষ করেন:
- টিউটোরিয়ালটি পুরানো এবং কেবল অবহিত API গুলি ব্যবহার করে।
- টিউটোরিয়ালটি নতুন এবং ভাল-লিখিত এবং কেবল কোর-সামঞ্জস্যপূর্ণ এপিআই ব্যবহার করে।
- টিউটোরিয়ালটি নতুন তবে এটি ধরে নিতে ভুল করেছেন যে আপনি কোনও ড্রাইভারের সাথে কাজ করছেন যা সমস্ত এপিআইগুলিকে সামঞ্জস্যতা মোডে সক্ষম করে এবং নতুন এবং পুরাতন উভয় এপিআইকে অবাধে মিশিয়ে দেয়।
- টিউটোরিয়ালটি ওপেনজিএল | ইএস এর মতো ওপেনলএল এর আলাদা সংস্করণের জন্য যা কোনও সংস্করণে পুরানো কোনও এপিআইকে সমর্থন করে না।
এর মতো বিষয়গুলি এমন glBegin
কিছু অংশ যা কখনও কখনও তাত্ক্ষণিক মোড এপিআই বলে। এটি অত্যন্ত বিভ্রান্তিকর কারণ ওপেনজিএলে ধরে রাখা মোড এবং "তাত্ক্ষণিক মোড" এর গ্রাফিক্সে ইতিমধ্যে আলাদা সংজ্ঞা ছিল বলে কোনও জিনিস নেই। ওপেনজিএল ২.১ এর পর থেকে তারা অপ্রচলিত হওয়ায় ওপেনজিএল ১.x এপিআই হিসাবে উল্লেখ করা আরও ভাল।
ওপেনএলএল এর 1.x এপিআই পুরানো দিনগুলিতে গ্রাফিক্স পাইপলাইনে তত্ক্ষণাত্ শীর্ষকোষ জমা দেবে। এটি ভালভাবে কাজ করেছিল যখন সিটিইউসটি ভার্টেক্স তথ্য উত্পন্ন করার জন্য সিপিইউর গতির সাথে মোটামুটিভাবে সরবরাহ করে এমন হার্ডওয়্যারটির গতি মোটামুটি ছিল। ওপেনজিএল পিছনে তখন ঠিক ত্রিভুজ রাস্টারাইজেশনটি অফলোড করেছে এবং অন্যটি নয়।
আজকাল, জিপিইউ উন্নত ভার্টেক্স এবং পিক্সেল রূপান্তর সম্পাদন করার সময় খুব উচ্চ গতিতে প্রচুর পরিমাণে উল্লম্বের মাধ্যমে চিবিয়ে দিতে পারে এবং সিপিইউ কেবল দূরবর্তীভাবে রাখতে পারে না। তারপরে, সিপিইউ এবং জিপিইউর মধ্যে ইন্টারফেসটি এই গতির পার্থক্যের চারপাশে ডিজাইন করা হয়েছে যার অর্থ এটি একবারে জিপিইউতে শীর্ষস্থান জমা করা এমনকি সম্ভব নয়।
সমস্ত জিএল ড্রাইভারকে অবশ্যই glBegin
অভ্যন্তরীণভাবে একটি ভার্টেক্স বাফার বরাদ্দ করে, glVertex
এই বাফারের সাথে জমা দেওয়া শীর্ষকোষগুলি রেখে , এবং তারপরে ডাকার পরে সেই পুরো বাফারটি একক ড্র কলটিতে জমা দিতে হবে glEnd
। এই ফাংশনগুলির ওভারহেড এর চেয়ে অনেক বেশি যদি আপনি নিজের উপরের ভার্টেক্স বাফারটি আপডেট করেন তবে কিছু ডকুমেন্টেশন (খুব ভুলভাবে!) "ভার্টিমাইজেশন" হিসাবে ভার্টেক্স বাফারগুলিকে উল্লেখ করবে (এটি কোনও অপ্টিমাইজেশন নয়; এটি আসলে একমাত্র উপায় জিপিইউতে কথা বলুন)।
বিভিন্ন অন্যান্য এপিআই রয়েছে যেগুলি কয়েক বছর ধরে ওপেনজিএলে অবচয় বা অপসারণ করা হয়েছে। তথাকথিত ফিক্সড-ফাংশন পাইপলাইন হ'ল এর মতো আরও একটি টুকরো। কিছু ডকুমেন্টেশন এখনও এই পাইপলাইন ব্যবহার করতে পারে বা প্রোগ্রামেবল পাইপলাইনের সাথে মিশে যেতে পারে। ফিক্সড-ফাংশন পাইপলাইন পুরানো দিনগুলি থেকে আসে যখন গ্রাফিক্স কার্ডগুলি 3 ডি দৃশ্যের রেন্ডার করতে ব্যবহৃত সমস্ত গণিতকে হার্ড-কোডড করেছিল এবং ওপেনগএল এপিআই সেই গণিতের জন্য কিছু কনফিগারেশন মান নির্ধারণের মধ্যে সীমাবদ্ধ ছিল। এই দিনগুলিতে হার্ডওয়ারটিতে খুব কম হার্ড-কোডেড গণিত রয়েছে এবং (আপনার সিপিইউয়ের মতো) পরিবর্তে ব্যবহারকারী-সরবরাহিত প্রোগ্রামগুলি চালিত করে (প্রায়শই শেডার বলা হয়)।
আবারও ড্রাইভারদের পুরানো এপিআই অনুকরণ করতে হবে কারণ স্থির ফাংশন বৈশিষ্ট্যগুলি কেবল হার্ডওয়ারে উপস্থিত হয় না। এর অর্থ হ'ল ড্রাইভারটির সাথে সামঞ্জস্যের শেডগুলির একটি গুচ্ছ রয়েছে যা স্থির-কার্যকরী দিনগুলি থেকে পুরানো গণিতটি কার্যকর করে যা আপনি নিজের শেডার সরবরাহ না করার সময় ব্যবহৃত হয়। পুরানো ওপিজএল ফাংশন যা সেই পুরানো ফিক্স-ফাংশন স্থিতি পরিবর্তন করে (পুরাতন ওপেনএল লাইটিং এপিআই এর মত) প্রকৃতপক্ষে আধুনিক ওপেনএল বৈশিষ্ট্যগুলি ব্যবহার করে ড্রাইভারের সামঞ্জস্যের শেডারগুলিতে এই মানগুলি খাওয়ানোর জন্য ইউনিফর্ম বাফারের মতো ব্যবহার করে।
সামঞ্জস্যতা সমর্থনকারী ড্রাইভারদের যখন আপনি এই অপ্রচলিত বৈশিষ্ট্যগুলি ব্যবহার করছেন এবং যখন আপনি এগুলি আধুনিক বৈশিষ্ট্যগুলি মসৃণভাবে সংযুক্ত করতে পারবেন তা নিশ্চিত করার জন্য পর্দার আড়ালে অনেক কাজ করতে হয় যা ওভারহেড যুক্ত করে এবং ড্রাইভারকে ব্যাপকভাবে জটিল করে তোলে। এটি এমন একটি কারণ যা কিছু ড্রাইভার আপনাকে নতুন বৈশিষ্ট্যগুলি পেতে মূল প্রোফাইল সক্ষম করতে বাধ্য করে; এটি এক সাথে একই সাথে ব্যবহৃত পুরানো এবং নতুন উভয় এপিআই সমর্থন না করে তাদের ড্রাইভার ইন্টার্নালগুলি ব্যাপকভাবে সরল করে।
প্রচুর ডকুমেন্টেশনগুলির সাহায্যে সুপারিশ করা যেতে পারে যে আপনি পুরানো এপিআইগুলি দিয়ে শুরু করার জন্য সহজ হয়ে যাওয়ার কারণে শুরু করুন। ডাইরেক্ট 3 ডি একটি সহচর গ্রন্থাগার ( ডাইরেক্টএক্স সরঞ্জাম কিট ) অফার করে নতুনদের জন্য এই সমস্যাটি সমাধান করেছেন যা সহজ অঙ্কন এপিআই এবং প্রাক-লিখিত ছায়া গো সরবরাহ করে যা আপনার দক্ষতা বাড়ার সাথে সাথে কাঁচা ডাইরেক্ট 3 ডি 11 ব্যবহারের সাথে নিখরচায় মিশ্রিত করা যায়। দুর্ভাগ্যক্রমে, বৃহত্তর ওপেনএল সম্প্রদায়টি বেশিরভাগই নতুনদের জন্য সামঞ্জস্যতা প্রোফাইলের সাথে আটকে রয়েছে, দুর্ভাগ্যক্রমে, এটি আবার সমস্যাযুক্ত কারণ এমন একটি সিস্টেম রয়েছে যা আপনাকে পুরানো ওপেনএল এপিআইগুলিকে নতুনগুলির সাথে মেশাতে দেয় না। নতুন ওপেনজিএলটিতে বিভিন্ন স্তরের বৈশিষ্ট্য এবং টার্গেট ব্যবহারের কেস এবং ভাষাগুলির সাথে সহজ রেন্ডারিংয়ের জন্য অফিশিয়াল লাইব্রেরি এবং সরঞ্জাম রয়েছে ( মনোগাম) উদাহরণস্বরূপ। নেট ব্যবহারকারীদের জন্য), তবে আনুষ্ঠানিকভাবে কোনও কিছুই অনুমোদিত বা ব্যাপকভাবে সম্মত হয়নি।
আপনি যে ডকুমেন্টেশনটি সন্ধান করছেন তা এমনকি ওপেনগিএলের জন্য নাও হতে পারে তবে অন্যান্য অনুরূপ এপিআইয়ের একটিতেও হতে পারে। ওপেনজিএল | ইএস 1.x এর ফিক্স-ফাংশন রেন্ডারিং ছিল তবে ভার্টেক্স জমা দেওয়ার জন্য ওপেনজিএল 1.x এপিআই নেই। ওপেনজিএল | ইএস 2.x + এবং ওয়েবজিএল 1+ এর কোনও স্থির-ফাংশন বৈশিষ্ট্য নেই এবং। APIগুলির জন্য কোনও পশ্চাদগামী সামঞ্জস্যতা মোড নেই।
এই এপিআইগুলি মূল ওপেনগিএলের সাথে খুব মিল দেখায়; এগুলি বেশ সামঞ্জস্যপূর্ণ নয়, তবে ওপেনজিএলে অফিসিয়াল এক্সটেনশন রয়েছে যা কিছু (সমস্ত নয়) ড্রাইভার ওপেনজিএল | ইএস (যা ওয়েবজিএল ভিত্তিক) এর সাথে সামঞ্জস্যপূর্ণ হওয়ার জন্য সমর্থন করে। কারণ বিষয়গুলি আগে যথেষ্ট বিভ্রান্তিকর ছিল না।