সরাসরি 3D। OpenAL. উইনসক। আপনি তাদের সম্পর্কে শুনে থাকতে পারেন, আপনি তাদের আগে ব্যবহার করতে পারেন, কিন্তু একটি জিনিস নিশ্চিত: যারা কখনও একটি কম্পিউটার ব্যবহার করেছেন প্রত্যেকের কাছে একটি সফ্টওয়্যারের টুকরো থাকবে যা তাদের ভাল ব্যবহার করেছে।
আমরা API সম্পর্কে কথা বলছি – সারা বিশ্বের প্রোগ্রামারদের জন্য সোনার উল। APIগুলি কী তা ব্যাখ্যা করার সাথে সাথে আমাদের সাথে যোগ দিন এবং সেগুলি কোথায় এবং কীভাবে ব্যবহার করা হয় তা দ্রুত দেখে নিন।
এটি ব্রিজ হার্ডওয়্যার (যেমন ইউএসবি) বা সফ্টওয়্যার আকারে হতে পারে, যেমনটি এখানে।
মূলত, ইন্টারফেস কম্পিউটিং উপাদানগুলিকে একে অপরের কাছে তথ্য পাঠাতে দেয়; কখনও কখনও এটি একটি একমুখী সেতু (উদাহরণস্বরূপ, একটি মাউস একটি ইউএসবি সকেট ব্যবহার করে একটি ল্যাপটপে একটি ইনপুট সংকেত পাঠায়), তবে সেগুলি দ্বিমুখী হওয়ার সম্ভাবনা বেশি।
API-এর ক্ষেত্রে, শুধু ডেটা পাস করার চেয়ে পর্দার আড়ালে আরও অনেক কিছু চলছে। তারা নিয়মগুলি নির্ধারণ করে যা ডেটার জন্য অনুরোধ করা যেতে পারে, কীভাবে সেই অনুরোধগুলি করতে হবে তা সংজ্ঞায়িত করে, ডেটা যে বিন্যাসে হওয়া উচিত তা ঘোষণা করে এবং আরও অনেক কিছু। এটি একটি খুব সীমাবদ্ধ জিনিস মত মনে হতে পারে, কিন্তু APIs প্রোগ্রামিং অনেক সহজ করতে সাহায্য করে.
এর কারণ হল তারা কার্যকরভাবে প্রোগ্রামার থেকে কম্পিউটার সিস্টেমের সমস্ত পটভূমির সূক্ষ্মতা এবং অভ্যন্তরীণ কাজগুলিকে লুকিয়ে রাখে এবং তাদের প্রয়োজনীয় সরঞ্জামগুলিতে তাদের অ্যাক্সেস দেয়। এর মানে হল যে অনেকগুলি আলাদা API হতে চলেছে, কিছু খুব বিস্তৃত পরিসর এবং প্রকৃতিতে এবং অন্যগুলি খুব নির্দিষ্ট ভূমিকা সহ।
যা আপনি শুনে থাকবেন
আপনি যদি একজন কৌতূহলী পিসি গেমার হন, আপনি সম্ভবত 3D গ্রাফিক্স তৈরি করতে ব্যবহৃত কিছু API-এর সাথে পরিচিত – বিশেষ করে OpenGL, Direct3D এবং Vulkan। এগুলি যেকোন রেন্ডারিং কোডের জন্য মৌলিক ভারা হিসাবে কাজ করে, প্রোগ্রামারকে আপেক্ষিক সহজে জটিল ভিজ্যুয়াল তৈরি করতে দেয়।
গ্রাফিক্স এপিআই কীভাবে সবকিছু বিন্যাস এবং কাঠামোবদ্ধ করা উচিত সে সম্পর্কে নির্দিষ্ট নিয়ম সেট করে এবং নিয়মিত গণিত অ্যালগরিদমগুলি পরিচালনা করার জন্য সহজ নির্দেশাবলী প্রদান করে। তাদের সবগুলিকে বছরের পর বছর ধরে উল্লেখযোগ্যভাবে আপডেট করা হয়েছে এবং শুধুমাত্র সুন্দর ছবি তৈরি করার চেয়ে আরও বেশি কিছু করার জন্য ব্যবহার করা যেতে পারে, সমস্ত শেডারের গণনার জন্য ধন্যবাদ।
পিসি ব্যতীত অন্য গেমিং প্ল্যাটফর্মগুলিও API ব্যবহার করে – মাইক্রোসফ্ট এক্সবক্সের জন্য ডাইরেক্ট 3D-এর একটি পরিবর্তিত সংস্করণ ব্যবহার করে, তবে নিন্টেন্ডো এবং সনি সুইচ এবং প্লেস্টেশনের জন্য তাদের নিজস্ব ব্যবহার করে, যদিও উভয়েরই OpenGL রুট রয়েছে। আছে
যদি ফোনে খেলা আপনার জিনিস হয়, তবে তাদের গ্রাফিক্স এপিআইও রয়েছে, যেমন মেটাল, যা অ্যাপলের পণ্যগুলির জন্য নির্দিষ্ট।
পাঠকরা স্মরণ করবেন যে 1990-এর দশকে, কিছু গ্রাফিক্স কার্ড বিক্রেতাদের নিজস্ব API ছিল – 3dfx-এর Glide এবং S3 গ্রাফিক্সের S3D ছিল। ওপেনজিএল-এর পছন্দটি তুলনামূলকভাবে নতুন ছিল এবং নির্মাতাদের দ্বারা প্রয়োজনীয় বৈশিষ্ট্য সেট এবং কর্মক্ষমতার অভাব ছিল।
কিছু সময়ের জন্য, Glide Graphics ছিল API-এর রাজা, কারণ এটির সাথে প্রোগ্রাম করা সহজ ছিল এবং 3dfx-এর ভুডুকে সম্ভাব্য সর্বোত্তম আলোতে দেখানো হয়েছিল। Glide এবং S3D-এর আয়ুষ্কাল খুবই সংক্ষিপ্ত ছিল, কারণ এগুলি অত্যন্ত স্বত্বাধিকারী ছিল – Direct3D ওপেন সোর্স নয়, তবে Windows এ সীমাবদ্ধ থাকা ছাড়া, যেকোনো GPU বিক্রেতা তাদের পণ্যগুলিতে এটি সমর্থন করার জন্য ড্রাইভার তৈরি করতে পারে।
যে বলেছে, মালিকানাধীন গ্রাফিক্স এপিআই আজও ব্যবহার করা হচ্ছে। এনভিডিয়ার CUDA API তাদের GPU-এর জন্য নির্দিষ্ট, যদিও এটি 3D রেন্ডারিংয়ের পরিবর্তে সাধারণ উদ্দেশ্য গণনা করার উদ্দেশ্যে।
2013 সালে, AMD ‘নিম্ন স্তরের’ API তৈরি করতে ব্যাটলফিল্ড গেমসের বিকাশকারীদের সাথে ঘনিষ্ঠভাবে কাজ শুরু করে।
‘নিম্ন স্তর’ শব্দটি API-তে হার্ডওয়্যার বিমূর্ততা বোঝায় – সফ্টওয়্যার রুটিন যা কার্যকরভাবে বিকাশকারীর কাছ থেকে চিপের মূল আর্কিটেকচারের নির্দিষ্ট বিবরণ লুকিয়ে রাখে, যা একাধিক প্ল্যাটফর্ম জুড়ে কাজ করবে এমন প্রোগ্রামগুলি লেখা সহজ করে তোলে। . এপিআইকে এই এলাকায় যত বেশি কাজ করতে হবে, তত বেশি CPU কাজের চাপ প্রক্রিয়া করতে হবে।
Mantle-এর জন্য AMD-এর লক্ষ্য ছিল এটিকে Direct3D এবং OpenGL-এর তুলনায় কম CPU-নির্ভর করা, সেইসাথে আরও প্রোগ্রামিং ক্ষমতা প্রদান করা। প্রকল্পটির উন্নয়ন 2015 সালে স্থগিত হয়ে যায় এবং 2019 সালের মধ্যে সম্পূর্ণ স্থবির হয়ে পড়ে, কারণ AMD তার কাজ বিনামূল্যে ক্রোনোস গ্রুপের কাছে হস্তান্তর করে – ভলকান-এর জন্য দায়ী সংস্থা।
API শুধুমাত্র সুন্দর ছবির জন্য নয়
গেমগুলি কেবল ভিজ্যুয়াল জিনিসগুলির চেয়ে বেশি নয়: প্রত্যেকেরই কোডেড করার জন্য অডিও, নেটওয়ার্কিং এবং ইনপুট ব্যবস্থাপনা রয়েছে৷ Direct3D আসলে ডাইরেক্টএক্স নামক একটি বৃহত্তর সংগ্রহের অংশ, যা উপরের সমস্ত গেম উপাদানগুলির জন্য API এবং সফ্টওয়্যার লাইব্রেরি অন্তর্ভুক্ত করে।
উদাহরণস্বরূপ, ডাইরেক্টইনপুট গেমপ্যাড, জয়স্টিক এবং স্টিয়ারিং হুইল থেকে কমান্ড পরিচালনা করে। স্বাভাবিকভাবেই, এগুলোর ওপেনজিএল সমতুল্য (উদাহরণস্বরূপ অডিওর জন্য ওপেনএল) রয়েছে, যদিও কিছু অপারেটিং সিস্টেম দ্বারা কভার করা হতে পারে, যা আমরা কিছুক্ষণের মধ্যে অন্বেষণ করব।