জ্যামিতির শেডার ব্যতীত ওপেনজিএল এটি কি করছিল?
না, তা নয়। জিএস একটি হল ঐচ্ছিক ধাপ, না একটি পদক্ষেপ একটি ডিফল্ট রয়েছে।
ওপেনজিএল জ্যামিতি শেডার চালিত করার জন্য , এটি অবশ্যই " আদিম সমাবেশ " নামে পরিচিত যা করতে হবে । যখন আপনি এর মাধ্যমে ত্রিভুজগুলির একটি সিরিজ রেন্ডার করেন GL_TRIANGLE_STRIP
, ওপেনজিএল প্রতিটি 3 সংলগ্ন শীর্ষকে একটি পৃথক ত্রিভুজে রূপান্তর করতে অভ্যন্তরীণ স্টাফ করবে, ঘুরানো ক্রমটি যথাযথভাবে পরিবর্তন করে।
সাধারণত, জিএস ব্যবহার না করার সময়, এই প্রক্রিয়াটি একবার সম্পাদন করা হয়। আপনি যদি কোনও জিএস ব্যবহার করেন তবে জিএস কার্যকর হওয়ার আগে এটি সম্পাদন করা আবশ্যক। তবে এটি অবশ্যই জিএসের পরে সম্পাদন করা আবশ্যক , কারণ একটি জিএস সম্পূর্ণ ভিন্ন আদিম ধরণের আউটপুট করতে পারে (যেমন কোয়াডস)।
সুতরাং এখন আপনি সিস্টেমটি তৈরি করছেন মূলত কিছুই না করে একগুচ্ছ অতিরিক্ত কাজ। সর্বোপরি, ওপেনজিএল ধরে নিতে পারে না যে আপনার জিএস কিছুই করছে না (এটি একটি অনির্বচনীয় সমস্যা)।
তদ্ব্যতীত, জিএসের উপস্থিতিতে বেশ কয়েকটি অপ্টিমাইজেশন কাজ করে না। সূচিকৃত রেন্ডারিং বিবেচনা করুন।
একটি উপাদান অ্যারে বাফার থেকে প্রতিটি সূচী একটি ভার্টেক্স শ্যাডার থেকে একই আউটপুট উত্পাদন করবে। সুতরাং জিপিইউ প্রায়শই এই ফলাফলগুলি পোস্ট-টি ও এল ক্যাশে ক্যাশে রাখে । যদি এটি ইতিমধ্যে ক্যাশে থাকা কোনও সূচকটি দেখে তবে ভিএস আবার চালানো হবে না; এটি কেবল ক্যাশে থেকে ডেটা আনে।
এটা কি"? "এটি" হ'ল ... আদিম সংসদীয় ইউনিট । হ্যাঁ, আপনি যখন জিএস ব্যবহার করেন তখন যা সেই জিনিসটি দুবার চালিত হয়। সূচি ক্যাচিং স্টাফ? এটি কেবল জিএস এর ইনপুটগুলির জন্য কাজ করে।
তাহলে জিএস এর ফলাফলগুলি কী ঘটে? ওয়েল, এটি হার্ডওয়্যার নির্ভর। তবে এটি কোনও ধরণের মেমরি বাফারে যেতে হবে। এবং এর মধ্যে সমস্যাটি রয়েছে: যে বাফারটি মোটেই সূচিযুক্ত নয়। এটি একটি glDrawArrays পরিস্থিতি মত।
সুতরাং আপনি যদি একটি সূচক বাফার প্রেরণ 0, 1, 2, 0, 2, 3
করেন তবে এটি টি-এল ও পোস্টের ক্যাশে 4 টি শীর্ষে অনুবাদ করবে। তবে উল্লম্বের জিএস পোস্টের বাফারের এখন এটিতে 6 টি শীর্ষ বিভাজন রয়েছে। জিএস-পরবর্তী পোস্টে বাফার আরও স্থান ব্যবহার করে। সুতরাং আপনি যদি সঠিকভাবে পোস্ট-টি অ্যান্ড এল অনুকূলিতকরণযুক্ত ত্রিভুজ তালিকা বা স্ট্রিপগুলি তৈরি করার সমস্যায় পড়েন এবং আপনি আপনার মতো পাস-থ্রো জিএস-এ ফ্লিপ করেন তবে আপনি সেই অপ্টিমাইজেশন থেকে আপনার পারফরম্যান্সের প্রায় অর্ধেক লাভকে হত্যা করেছেন।
এটি অকেজো ছিল না, তবে এটি আঘাত করে।
এর সাথে যুক্ত হ'ল অনেক জিএল 3.x-শ্রেণীর জিপিইউগুলি (ওরফে: ডিএক্স 10) এর চেয়ে ছোট পোস্ট-জিএস পোস্ট করেছে। বাফার যত কম হবে, আপনি একইসাথে সক্রিয় করতে পারেন তত কম জিএস আমন্ত্রণ। সুতরাং আপনার হার্ডওয়্যার কার্যকরভাবে জিএসে বাধা দেয়। যেহেতু টেসেললেশন 4.x শ্রেণীর হার্ডওয়্যারের একটি বৃহত বৈশিষ্ট্য, এ জাতীয় বেশিরভাগ হার্ডওয়্যারে ভারী জিএস ব্যবহারযোগ্য করে তোলার জন্য যথেষ্ট পরিমাণে বাফার রয়েছে।
সুতরাং একটি জিএস ব্যবহার করার ফলে আপনার কোডটি ভার্টেক্স প্রক্রিয়াকরণকে বাধা দেয় more অবশ্যই, আপনি সর্বদা আপনার ভার্টেক্স এবং টুকরা ছায়াগুলি আরও জটিল করে আপনার সুবিধার্থে এটি ব্যবহার করতে পারেন, যেহেতু এটি তখন কেবলমাত্র বিনামূল্যে কর্মক্ষমতা performance
জিএস-প্ররোচিত মন্দা সম্পর্কে আরও তথ্যের জন্য, এই নিবন্ধটি পড়ুন ।
জিএস সম্পর্কে থাম্বের একটি প্রাথমিক নিয়ম: এখানে কখনও জিএস ব্যবহার করবেন না কারণ আপনি মনে করেন এটি দ্রুততর উপস্থাপন করবে । আপনি যখন চেষ্টা করার চেষ্টা করছেন তখন এটি আপনার ব্যবহার করা উচিত । আপনি যা করতে চেষ্টা করছেন তা যদি একটি অপ্টিমাইজেশন হয় তবে অন্য কিছু ব্যবহার করুন।
এর সাধারণ ব্যতিক্রমগুলি হ'ল: