এই প্রশ্নের উত্তর দেওয়া প্রায় অসম্ভব কারণ ওপেনজিএল নিজেই কেবল একটি ফ্রন্ট এন্ড API, এবং যতক্ষণ না কোনও বাস্তবায়ন নির্দিষ্টকরণের সাথে মেনে চলে এবং ফলাফল এটির সাথে মিলিত হয় ততক্ষণ আপনার পছন্দ মতো এটি করা যেতে পারে।
প্রশ্নটি হতে পারে: কোনও ওপেনজিএল ড্রাইভার নিম্নতম স্তরে কীভাবে কাজ করে। এখন এটি সাধারণভাবে উত্তর দেওয়া আবার অসম্ভব, কারণ কোনও ড্রাইভার কিছু হার্ডওয়ারের সাথে খুব ঘনিষ্ঠভাবে আবদ্ধ থাকে, যা আবার এমন কিছু করতে পারে তবে বিকাশকারী এটি নকশা করেছিলেন।
সুতরাং প্রশ্নটি হওয়া উচিত ছিল: "ওপেনজিএল এবং গ্রাফিক্স সিস্টেমের পর্দার পিছনে এটি কীভাবে গড় দেখায়?" নীচে থেকে এটি তাকান:
নিম্ন স্তরে কিছু গ্রাফিক্স ডিভাইস রয়েছে। আজকাল এগুলি জিপিইউ যা তাদের ক্রিয়াকলাপ নিয়ন্ত্রণ করে এমন একটি রেজিস্টার সরবরাহ করে (যা রেজিস্টারগুলি হ'ল ডিভাইস নির্ভর) শ্যাডারের জন্য কিছু প্রোগ্রাম মেমরি থাকে, ইনপুট ডেটার জন্য বাল্ক মেমরি (বিশিষ্ট, টেক্সচার ইত্যাদি) এবং বাকী একটি আই / ও চ্যানেল থাকে সিস্টেমটি যার উপর থেকে এটি ডেটা এবং কমান্ড স্ট্রিমগুলি গ্রহণ / প্রেরণ করে।
গ্রাফিক্স ড্রাইভার জিপিইউগুলির স্থিতি এবং জিপিইউ ব্যবহার করে এমন সমস্ত সংস্থান অ্যাপ্লিকেশন প্রোগ্রামের উপর নজর রাখে। এছাড়াও এটি অ্যাপ্লিকেশন দ্বারা প্রেরিত ডেটা রূপান্তর বা অন্য কোনও প্রক্রিয়াজাতকরণের জন্য দায়ী (জিপিইউ দ্বারা সমর্থিত পিক্সেলফর্মটে টেক্সচারকে রূপান্তর করুন, জিপিইউর মেশিন কোডে শেডারগুলি সংকলন করুন)। এছাড়াও এটি অ্যাপ্লিকেশন প্রোগ্রামগুলিতে কিছু বিমূর্ত, ড্রাইভার নির্ভর ইন্টারফেস সরবরাহ করে।
তারপরে ড্রাইভার নির্ভর ওপেনজিএল ক্লায়েন্ট লাইব্রেরি / ড্রাইভার রয়েছে। উইন্ডোজে এটি প্রক্সি দ্বারা ওপেনগ্ল 32.ডিলের মাধ্যমে লোড হয়ে যায়, ইউনিক্স সিস্টেমে এটি দুটি জায়গায় থাকে:
- এক্স 11 জিএলএক্স মডিউল এবং ড্রাইভার নির্ভর জিএলএক্স ড্রাইভার
- এবং /usr/lib/libGL.so সরাসরি রেন্ডারিংয়ের জন্য কিছু ড্রাইভার নির্ভর স্টাফ থাকতে পারে
ম্যাকস এক্স-তে এটি "ওপেনজিএল ফ্রেমওয়ার্ক" হতে পারে।
এই অংশটিই ওপেনজিএল কলগুলিতে অনুবাদ করে যে কীভাবে আপনি এটি (2) এ বর্ণিত ড্রাইভারের অংশের ড্রাইভার নির্দিষ্ট ফাংশনগুলিতে কলগুলিতে করেন।
অবশেষে আসল ওপেনজিএল এপিআই লাইব্রেরি, উইন্ডোজে ওপেনগ্ল 32.ডিল এবং ইউনিক্স / ইউএসআর / লিবি / লিবিজিএল; এটি বেশিরভাগই কমান্ডগুলি কেবল ওপেনএল বাস্তবায়নের যথাযথভাবে পাস করে।
আসল যোগাযোগ কীভাবে ঘটে তা সাধারণ করা যায় না:
ইউনিক্সে 3 <-> 4 সংযোগটি সকেটের মাধ্যমে ঘটতে পারে (হ্যাঁ, এটি আপনি যদি চান তবে নেটওয়ার্কের বাইরেও যেতে পারে) অথবা শেয়ার্ড মেমোরির মাধ্যমে। উইন্ডোজে ইন্টারফেস লাইব্রেরি এবং ড্রাইভার ক্লায়েন্ট উভয়ই প্রসেসের অ্যাড্রেস স্পেসে লোড করা হয়, সুতরাং এটি এত বেশি যোগাযোগের মতো নয় তবে সাধারণ ফাংশন কল এবং ভেরিয়েবল / পয়েন্টার পাসিং। ম্যাকোস এক্স-এ এটি উইন্ডোজের অনুরূপ, কেবল ওপেনজিএল ইন্টারফেস এবং ড্রাইভার ক্লায়েন্টের মধ্যে কোনও বিভাজন নেই (এ কারণেই ম্যাকোস এক্স নতুন ওপেনলএল সংস্করণগুলি ধরে রাখতে এত ধীর হয়, নতুন বিতরণ করার জন্য এটি সর্বদা একটি সম্পূর্ণ অপারেটিং সিস্টেম আপগ্রেডের প্রয়োজন ফ্রেমওয়ার্ক)।
যোগাযোগ 3 বি </>> আইওএসটিএল মাধ্যমে যেতে পারে, পড়তে / লিখতে পারে, বা প্রক্রিয়া ঠিকানা স্পেসে কিছু মেমরি ম্যাপিংয়ের মাধ্যমে এবং যখনই সেই স্মৃতিতে পরিবর্তন হয়ে যায় তখন কিছু ড্রাইভার কোড ট্রিগার করতে এমএমইউ কনফিগার করে। এটি যে কোনও অপারেটিং সিস্টেমে একেবারে অনুরূপ যেহেতু আপনাকে সর্বদা কার্নেল / ইউজারল্যান্ডের সীমানাটি অতিক্রম করতে হয়: শেষ পর্যন্ত আপনি কিছু সিস্টেমে যান।
পেরিফিয়াল বাস এবং এটি যে অ্যাক্সেস পদ্ধতির দ্বারা সংজ্ঞায়িত করা হয় তার মাধ্যমে সিস্টেম এবং জিপিইউর মধ্যে যোগাযোগ ঘটে, সুতরাং পিসিআই, এজিপি, পিসিআই-ই, ইত্যাদি, যা পোর্ট-আই / ও, মেমরি ম্যাপযুক্ত আই / ও, ডিএমএ, আইআরকিউগুলির মাধ্যমে কাজ করে।