ভিবিওগুলির সাথে আপনার সাধারণত দুটি বড় সুবিধা রয়েছে।
সুবিধা 1 সম্পূর্ণ স্থিতিশীল ডেটার সাথে সম্পর্কিত এবং জিপিইউর জন্য আরও অনুকূল যে মেমরিতে আপনার ভার্টেক্স ডেটা রাখতে সক্ষম হওয়া থেকে আসে।
সুবিধা 2 ডায়নামিক ডেটার সাথে সম্পর্কিত এবং রেন্ডারিংয়ের জন্য এটি ব্যবহারের আগে যে কোনও সময় আপনার ভার্টেক্স তথ্যটি নির্দিষ্ট করতে সক্ষম হওয়া থেকে আসে, যা পাইপলাইন আরও ভাল করতে পারে।
তৃতীয় সুবিধা ড্র কল ব্যাচিংয়ের মাধ্যমে আসে, তবে এটি পুরানো-স্কুল ভার্টেক্স অ্যারেগুলির সাথেও ভাগ করা হয় তাই আমি বিশেষত ভিবিওগুলির জন্য এটি কল করছি না। কোনও জিপিইউতে ডেটা প্রেরণ করা (বা জিপিইউতে ইতিমধ্যে ডেটা ব্যবহার করা) I / O এবং নেটওয়ার্ক ট্র্যাফিকের অনেক ধরণের ক্ষেত্রে অনুরূপ - আপনার যদি কয়েকটি বড় ব্যাচ থাকে তবে এটি অনেক ছোট ব্যাচের চেয়ে বেশি দক্ষ।
একটি ভাল (100% সঠিক নয় তবে আপনাকে ধারণাটি পেতে সহায়তা করার জন্য যথেষ্ট) এর সাদৃশ্যটি হ'ল আপনি যদি এমন এক বাস চালক হন যিনি 50 জন লোককে এক শহর থেকে অন্য শহরে নিয়ে আসতে হয়। আপনি এগুলি একবারে লোড করতে পারেন এবং 50 টি পৃথক ট্রিপ করতে পারেন - এটি গ্লোব্যাগিন / গ্ল্যান্ড। বিকল্পভাবে আপনি তাদের 50 টিকে বাসে রেখে কেবল একটি একক ট্রিপ করতে পারেন - এটি ভার্টেক্স অ্যারে বা ভিবিওগুলির সাথে জড়িত (ভিবিওর ক্ষেত্রে 50 জন ইতিমধ্যে বাসে উঠত;))।
এটি যদিও দামে আসে এবং এখানে দামটি হ'ল যে আপনি যখন প্রয়োজন হবে ঠিক তখনই ভার্টেক্স তথ্য নির্দিষ্ট করার ক্ষমতা হারাবেন। ঠিক আছে, ঠিক আছে, আপনি এটি করতে পারেন (কিছু অতিরিক্ত কাজ সহ), তবে আপনি আপনার কোডটি থেকে পুরো সম্পাদনা পাবেন না। পরিবর্তে আপনার আপনার ভার্টেক্স ডেটা সম্পর্কে আরও চিন্তা করা দরকার, এটি কীভাবে ব্যবহৃত হয়, কীভাবে (এবং যদি) এটি আপডেট করার দরকার হয় তবে কোনও অ্যানিমেশন শেডারে করা যায় কিনা (এভাবে ডেটা স্থিতিশীল রাখতে সক্ষম করে - ভিবিওগুলিকে সত্যিকার অর্থে ছায়ার প্রয়োজন অ্যানিমেশনের অনেকগুলি কেস ভালভাবে কাজ করতে পারে) বা প্রতিটি ফ্রেমে আপনার ভার্টেক্স তথ্য উপাত্তের প্রয়োজন আছে কিনা, আধুনিক আপডেটগুলি কার্যকর দক্ষতার কৌশল ইত্যাদি আপনি যদি এটি না করেন এবং কেবল একটি নিষ্পাপ রূপান্তর বাস্তবায়ন করেন তবে আপনার ঝুঁকির ঝুঁকি খুব বেশি রয়েছে শুধুমাত্র শেষ ফলাফলের জন্য প্রচুর কাজ করতে আসলে ধীর গতিতে!
আপনি যখন প্রথম মুখোমুখি হয়েছিলেন তখন এটিকে এক ভয়াবহ কাজের মতো মনে হতে পারে, তবে বাস্তবে তা হয় না। একবার আপনি এই জাতীয় চিন্তাভাবনার মোডে উঠলে আপনি দেখতে পাবেন এটি অবিশ্বাস্যরকম সহজ এবং প্রায় প্রাকৃতিকভাবে আসে comes তবে আপনি আপনার প্রথম কয়েকটি প্রচেষ্টা চালিয়ে যেতে পারেন এবং যদি তাই হয় তবে আপনাকে নিরুৎসাহিত করা উচিত নয় - স্ক্রু আপ করা আপনার ভুলটি কী থেকে শিখার সুযোগ।
কয়েকটি চূড়ান্ত চিন্তা।
ভিবিওতে সহজেই লোড করা যায় এমন একটি ফর্ম্যাটে আপনার মডেল ডেটা থাকা আপনার জন্য এই পুরো প্রক্রিয়াটিকে আরও সহজ করে তুলতে সহায়তা করতে পারে। এর অর্থ হ'ল আপনার আরও জটিল বা বহিরাগত ফর্ম্যাটগুলি এড়ানো উচিত, কমপক্ষে প্রথমে (এবং যতক্ষণ না আপনি প্রক্রিয়াটি নিয়ে বেশি স্বাচ্ছন্দ্য বোধ করবেন); শেখার সময় জিনিসগুলি যথাসম্ভব সহজ এবং বেসিক রাখুন এবং ভুল হওয়ার মতো জিনিসগুলি কম থাকবে এবং (বা কখন!) জিনিস ভুল হয়ে গেলে ত্রুটির জন্য কম জায়গা খুঁজে পেতে হবে।
লোকেরা কখনও কখনও অপ্টিমাইজড / কমপ্রেসড গ্লব্যাগিন / গ্ল্যান্ড বাস্তবায়ন (এমনকি তারা এটিকে "বর্জ্য" হিসাবেও উল্লেখ করতে পারে) এর চেয়ে বেশি মেমরি ব্যবহার করে কোনও ভিবিও বাস্তবায়ন দেখতে পান sometimes এরকম হবেন না। চরম ক্ষেত্রে ছাড়া, মেমোরি ব্যবহার সত্যিই নয় যে গুরুত্বপূর্ণ। এটি এখানে একটি পরিষ্কার বাণিজ্য - আপনি যথেষ্ট উচ্চতর পারফরম্যান্সের বিনিময়ে সম্ভাব্য উচ্চতর মেমরির ব্যবহার গ্রহণ করছেন। মানসিকতা বিকাশে সহায়তা করে যে স্মৃতিটি একটি সস্তা এবং প্রচুর পরিমাণে উত্স যা সেখানে ব্যবহার করা যেতে পারে; পারফরম্যান্স হয় না।
এবং অবশেষে পুরাতন চেস্টনট - যদি এটি ইতিমধ্যে যথেষ্ট দ্রুত হয় তবে আপনার কাজ হয়ে গেছে। যদি আপনি আপনার টার্গেট ফ্রেমরেটটিকে আঘাত করে থাকেন, যদি আপনার ক্ষণস্থায়ী অবস্থার জন্য হেডরুম থাকে তবে এটি যথেষ্ট ভাল এবং আপনি পরবর্তী পদক্ষেপে যেতে পারেন। আপনি একটি অপচয় করতে অনেক কিছু আসলে এটি প্রয়োজন এই নয় যে একটি অতিরিক্ত 10% আউট পিষণ (সেখানে, যে কাজ, এখনও ফাঁদে পা) যাতে সবসময় বিবেচনা কি আপনার নিজের সময় অধিকাংশ অনুকূল ব্যবহার সময় এবং শক্তির - কারণ প্রোগ্রামার সময় পারফরম্যান্সের তুলনায় আরও কম সস্তা এবং কম প্রচুর!