ওপেনজিএল ব্যতীত আমি কখনই সেগুলি গ্রন্থাগার ব্যবহার করি নি, তবে আমি আপনার মতো উইকিপিডিয়া পৃষ্ঠাগুলি পড়ে অনুমান করার চেষ্টা করব।
তুমি মেসার ব্যাপারে ঠিক বলেছ। আমাদের কাছে অতিরিক্ত তথ্য এখানে রয়েছে:
"এক্স উইন্ডো সিস্টেমটি একটি কম্পিউটার সফ্টওয়্যার সিস্টেম এবং নেটওয়ার্ক প্রোটোকল যা নেটওয়াক কম্পিউটারগুলির জন্য ভিত্তি জিইউআই সরবরাহ করে It এটি একটি হার্ডওয়্যার বিমূর্ত স্তর তৈরি করে।"
"জিএলএক্স এক্স উইন্ডো সিস্টেমের দ্বারা সরবরাহিত উইন্ডোর মধ্যে ওপেনগিএল ব্যবহার করতে ইচ্ছুক প্রোগ্রামগুলিকে সক্ষম করে
G জিএলএক্সের তিনটি অংশ রয়েছে:
- ওপেনজিএল ফাংশন সরবরাহ করে এমন একটি এপিআই
- এক্স প্রোটোকলের একটি এক্সটেনশন, যা ক্লায়েন্টকে 3D প্রেরণ করতে দেয় রেন্ডারিং কমান্ড - এক্স সার্ভারের একটি এক্সটেনশান যা ক্লায়েন্টের কাছ থেকে রেন্ডারিং কমান্ডগুলি গ্রহণ করে এবং ইনস্টলড ওপেনএল লাইব্রেরিতে এগুলি প্রদান করে
যদি ক্লায়েন্ট এবং সার্ভার একই কম্পিউটারে চলমান থাকে এবং একটি ত্বরণী 3 ডি গ্রাফিক্স কার্ড পাওয়া যায় তবে পূর্বের দুটি উপাদানগুলি ডিআরআই দ্বারা বাইপাস করা। ক্লায়েন্ট প্রোগ্রামটি সরাসরি গ্রাফিক্স হার্ডওয়্যার অ্যাক্সেসের অনুমতি দেওয়া হয়। "
"ডাইরেক্ট রেন্ডারিং ইনফ্রাস্ট্রাকচার (ডিআরআই) এক্স উইন্ডো সিস্টেমে ব্যবহৃত একটি ইন্টারফেস যা এক্স সার্ভারের মাধ্যমে ডেটা পাস করার প্রয়োজন ছাড়াই ব্যবহারকারী অ্যাপ্লিকেশনগুলিকে ভিডিও হার্ডওয়্যার অ্যাক্সেস করতে দেয়।"
"ওপেন উদ্ভাবক হ'ল একটি সি ++ থ্রি গ্রাফিক্স এপিআই যা ওপেনগিএলের জন্য উচ্চতর প্রোগ্রামিংয়ের স্তর সরবরাহ করতে ডিজাইন করা হয়েছে"
জিনিসগুলি সহজ করে তুলতে, আসুন data সমস্ত API এর প্রত্যেকের এন্ট্রি এবং প্রস্থানকালে ঘটে যাওয়া ডেটা (এবং আদেশগুলি) এর সরলিকৃত প্রবাহটি কল্পনা করি। একেবারে শুরুতে আমাদের কাছে আপনার অ্যাপ্লিকেশন প্রোগ্রাম (সংকলিত কোড) রয়েছে যা আপনি আপনার কম্পিউটার থেকে চালাচ্ছেন। শেষে আমাদের চিত্রগুলি রয়েছে যা আপনার স্ক্রিনে প্রদর্শিত হয়।
বেশ কয়েকটি ক্ষেত্রে আমি এই প্রশ্নের উত্তরগুলিকে সংযত
রাখব : - আপনার কম্পিউটারে গ্রাফিক কার্ড (জিপিইউ), বা গ্রাফিক ফাংশনগুলি প্রক্রিয়াকরণের জন্য কেবল একটি সিপিইউ আছে?
-আপনার অ্যাপ্লিকেশনটি এক্স-উইন্ডো সিস্টেমের একটি উইন্ডোতে এম্বেড করা আছে?
-যদি আপনি এক্স উইন্ডো সিস্টেমটি ব্যবহার করেন, "কম্পিউটারের কম্পিউটারে বা নেটওয়ার্কের অন্য কোনও কম্পিউটারে" এক্স সার্ভার "চলছে?
আমি ধরে নিচ্ছি আপনার জিপিইউর জন্য ড্রাইভার রয়েছে এবং আপনার কাছে সফটওয়্যার রেন্ডারিংয়ের জন্য মেসা রয়েছে)।
প্রথম দৃশ্য: আপনি এক্স উইন্ডো সিস্টেমটি ব্যবহার না করেই ওপেনআইভেন্টর দিয়ে রচিত একটি গ্রাফিক অ্যাপ্লিকেশন চালনা করেন এবং আপনার গ্রাফিক কার্ড নেই। প্রোগ্রামের প্রবাহটি এর সাথে বেশ সমান হবে:
Your application
↓ (uses functions of)
OpenInventor
↓ (calls functions declared by)
OpenGL
↓ (redirects function calls to implementation defined by)
Mesa
↓ (implemented OpenGL functions to be run on the CPU)
[Probably] Operating System rendering API
↓
3D Images on your screen
এখানে যা ঘটে তাকে "সফটওয়্যার রেন্ডারিং" বলা হয়: গ্রাফিক্স কমান্ডটি কোনও গ্রাফিক হার্ডওয়্যার দ্বারা পরিচালিত হয় না, পরিবর্তে আপনার সাধারন সিপিইউ, সাধারণত প্রসেসর যা সফ্টওয়্যার চালায়।
দ্বিতীয় দৃশ্য: এখন কল্পনা করুন যে উপরের মতো একই শর্তের সাথে আপনার একটি গ্রাফিক কার্ড রয়েছে। প্রবাহটি আরও দেখতে লাগবে:
Your application
↓ (uses functions of)
OpenInventor
↓ (calls functions declared by)
OpenGL
↓ (redirects function calls to implementation defined by)
Proprietary Drivers
↓ (converts OpenGL commands to GPU commands)
Graphic Card
↓
3D Images on your screen
এখন যা ঘটে তাকে "হার্ডওয়ার ত্বরণ" বলা হয়, সাধারণত প্রথম দৃশ্যের চেয়ে দ্রুত faster
তৃতীয় দৃশ্য: এখন কয়েকটি উইকিপিডিয়া লাইনের উপর ভিত্তি করে এক্স উইন্ডো সিস্টেম প্রবাহ, বা কমপক্ষে আমি কীভাবে এটি মনে করি তা প্রবর্তন করি।
কিছুক্ষণের জন্য গ্রাফিক হার্ডওয়্যার এবং এপিআই সম্পর্কে ভুলে যাই। প্রবাহটি দেখতে এমন হওয়া উচিত:
Your application (X Window System sees it as an "X Client")
↓ (sends requests defined by the X Window System Core Protocol)
X Server
↓ (convert your request to graphic commands)
[Probably] Operating System rendering API
↓
Windows or 2D images on your screen
নোট করুন যে এক্স উইন্ডো সিস্টেমটি ব্যবহার করার সময়, আপনার স্ক্রিন এবং যে কম্পিউটার থেকে আপনি আপনার অ্যাপ্লিকেশনটি চালাচ্ছেন সেগুলি "সরাসরি" সংযুক্ত নাও হতে পারে, তবে একটি নেটওয়ার্কের মাধ্যমে সংযুক্ত হতে পারে।
চতুর্থ দৃশ্য: ধরুন আপনি পূর্বের উদাহরণ থেকে আপনার এক্স ক্লায়েন্ট অ্যাপ্লিকেশনটিতে অভিনব 3D গ্রাফিক রেন্ডারিং যুক্ত করতে চান। আমার কাছে মনে হচ্ছে এক্স উইন্ডো সিস্টেমটি মূলত এটি করতে সক্ষম নয়, বা কমপক্ষে একটি ওপেনগিএল এপিআই ফাংশনের সমতুল্য সম্পাদন করার জন্য অনেকগুলি সংশ্লেষিত কোডের প্রয়োজন হবে।
ভাগ্যক্রমে আপনি GLX ব্যবহার করে সিস্টেমে ওপেনএল কমান্ডগুলির সমর্থন যোগ করতে পারেন। আপনার এখন আছে:
Your application
↓ (sends graphic requests defined by the "GLX extension to the X Protocol")
X Server with the GLX extension
↓ (convert your request to OpenGL commands)
OpenGL
↓ (redirects function calls to implementation defined by)
...
এখন আপনি প্রথম দৃশ্যে "ওপেনজিএল" এর পরে সেই শেষ তীরটিকে আবার সংযুক্ত করতে পারেন: আপনি আপনার স্ক্রিনে 3 ডি চিত্র পেতে পারেন!
অবশেষে আমি ডিআরআই সম্পর্কে যা বুঝি সে সম্পর্কে:
মেসাকে জিপিইউতে অ্যাক্সেসের অনুমতি দেওয়া হয়েছে বলে মনে হচ্ছে, যাতে এটি আমাদের প্রথম দৃশ্যের প্রবাহকে পরিবর্তিত করে:
...
↓
Mesa
↓ (forwards OpenGL commands)
DRI
↓ (converts OpenGL commands to GPU commands)
Graphic Card
↓
3D Images on your screen
এটির সার্ভার এবং ক্লায়েন্ট একই কম্পিউটারে রয়েছে এবং আপনার একটি জিপিইউ রয়েছে এই শর্ত দিয়ে জিএলএক্স ব্যবহার করার সময় প্রবাহটিকে শর্ট সার্কিট বলে মনে হয়। সেক্ষেত্রে আমাদের চতুর্থ দৃশ্যের গ্রাফটি সহজভাবে হয়ে উঠবে:
Your application
↓ (sends graphic requests defined by the "GLX extension to the X Protocol")
DRI
↓ ("catches" OpenGL commands and converts them to GPU commands)
Graphic Card
↓
3D Images on your screen
এটাই !
এখন মনে রাখবেন যে আমি ইউনিক্স পরিবেশে বিশেষজ্ঞ নই, তাই আমার সেরা পরামর্শটি হ'ল তারা কী করতে পারে তা সুনির্দিষ্টভাবে জানার জন্য সেই সমস্ত এপিআইয়ের ডকুমেন্টেশন অধ্যয়ন করা।
পূর্ববর্তী চার্টটিকে একটিতে একত্রিত করা বিষয়গুলি বুঝতে সহজতর হতে পারে। আমি এটি একটি অনুশীলন হিসাবে আপনাকে দিন!