গ্রাফিক্স প্রোগ্রামিং শেখা কেবল এপিআই শিখার চেয়ে আরও বেশি কিছু। এটি গ্রাফিকগুলি কীভাবে কাজ করে তা শেখার বিষয়ে। ভার্টেক্স রূপান্তর, আলোক মডেল, ছায়া কৌশল, টেক্সচার ম্যাপিং, বিলম্বিত রেন্ডারিং এবং আরও অনেক কিছু। এগুলি প্রয়োগ করতে আপনি যে API ব্যবহার করেন তার সাথে এগুলির একেবারেই কোনও সম্পর্ক নেই।
সুতরাং প্রশ্নটি হ'ল: আপনি কীভাবে এপিআই ব্যবহার করবেন তা শিখতে চান? না আপনি গ্রাফিক্স শিখতে চান ?
হার্ডওয়্যার-ত্বরণযুক্ত গ্রাফিক্স সহ স্টাফ করার জন্য আপনাকে সেই হার্ডওয়্যারটি অ্যাক্সেস করতে কীভাবে একটি API ব্যবহার করতে হবে তা শিখতে হবে। তবে একবার আপনি যদি সিস্টেমের সাথে ইন্টারফেস করার ক্ষমতা অর্জন করেন, আপনার গ্রাফিক্স শিখতে আপনার জন্য API কী করবে এবং তার পরিবর্তে গ্রাফিক্স ধারণাগুলিতে ফোকাস করা বন্ধ করে দেয়। আলোকসজ্জা, ছায়া গোছা, ম্যাপিং ইত্যাদি
যদি আপনার লক্ষ্য গ্রাফিক্স ধারণাগুলি শেখা হয়, আপনি API এর সাথে সময় কাটাচ্ছেন এমন সময় আপনি গ্রাফিক্স ধারণাগুলি শেখার জন্য ব্যয় করছেন না । শেডারগুলি কীভাবে সংকলন করবেন তার গ্রাফিক্সের সাথে কোনও সম্পর্ক নেই। বা কীভাবে তাদের ইউনিফর্ম প্রেরণ করা যায়, কীভাবে বাফারগুলিতে ভারটেক্স ডেটা আপলোড করা যায় ইত্যাদি ইত্যাদি এগুলি সরঞ্জাম এবং গ্রাফিক্সের কাজ করার জন্য গুরুত্বপূর্ণ সরঞ্জাম।
তবে এগুলি আসলে গ্রাফিক্সের ধারণা নয়। এগুলি শেষ হওয়ার উপায়।
এটা একটা সময় লাগে অনেক কাজের এবং Vulkan সঙ্গে শেখার আগে আপনাকে বিন্দু যেখানে আপনি গ্রাফিক্স ধারণা শেখা শুরু করার জন্য প্রস্তুত হন পৌঁছাতে পারেন। শেডারগুলিতে ডেটা পাস করার জন্য সুস্পষ্ট মেমরি পরিচালনা এবং অ্যাক্সেসের সুস্পষ্ট সিঙ্ক্রোনাইজেশন প্রয়োজন। এবং তাই এগিয়ে।
বিপরীতে, ওপেনগিএলের সাথে এই মুহুর্তে পৌঁছাতে কম কাজ প্রয়োজন। এবং হ্যাঁ, আমি আধুনিক, শেডার-ভিত্তিক কোর-প্রোফাইল ওপেনজিএল সম্পর্কে বলছি।
স্ক্রিন সাফ করার মতো সহজ কিছু করতে যা লাগে তা কেবল তুলনা করুন। ভুলকানে, এর জন্য কমপক্ষে বিপুল সংখ্যক ধারণাগুলি সম্পর্কে কিছুটা বোঝাপড়া দরকার: কমান্ড বাফার, ডিভাইস সারি, মেমরি অবজেক্ট, চিত্র এবং বিভিন্ন ডাব্লুএসআই কনস্ট্রাক্টস।
যেমন OpenGL ইন ... এটা তিনটি কার্যকারিতা দেওয়া হল: glClearColor
, glClear
, এবং প্ল্যাটফর্ম-নির্দিষ্ট swap 'র কল বাফার। আপনি যদি আরও আধুনিক ওপেনএল ব্যবহার করছেন তবে আপনি এটিকে দুইটিতে নামিয়ে আনতে পারেন: glClearBufferuiv
এবং বাফারগুলি অদলবদল করুন। ফ্রেমবফার কী বা এর চিত্রটি কোথা থেকে এসেছে তা আপনার জানতে হবে না। আপনি এটি সাফ করুন এবং বাফারগুলি স্যুপ করুন।
যেহেতু ওপেনজিএল আপনার কাছ থেকে অনেক কিছু আড়াল করে, আপনি যেখানে গ্রাফিক্স হার্ডওয়্যার থেকে ইন্টারফেস শেখার বিপরীতে আপনি প্রকৃতপক্ষে গ্রাফিকগুলি শিখছেন সেখানে পৌঁছতে অনেক কম প্রচেষ্টা দরকার takes
তদ্ব্যতীত, ওপেনজিএল একটি (অপেক্ষাকৃত) নিরাপদ API। আপনি সাধারণত কিছু ভুল করলে এটি ত্রুটি প্রকাশ করবে। ভুলকান নেই। আপনি সাহায্য করতে ডিবাগিং স্তরগুলি ব্যবহার করতে পারেন এমন সময়ে, মূল ভলকান এপিআই আপনাকে হার্ডওয়্যার ত্রুটি না থাকলে প্রায় কিছুই বলবে না। আপনি যদি কিছু ভুল করেন তবে আপনি জঞ্জাল রেন্ডারিং বা জিপিইউ ক্র্যাশ করতে পারেন।
ভুলকানের জটিলতার সাথে মিলিত হয়ে ঘটনাক্রমে ভুল কাজটি করা খুব সহজ হয়ে যায়। ডান বিন্যাসে একটি টেক্সচার সেট করতে ভুলে যাওয়া একটি প্রয়োগের অধীনে কাজ করতে পারে তবে অন্যটি নয়। একটি সিঙ্ক্রোনাইজেশন পয়েন্ট ভুলে যাওয়া কখনও কখনও কাজ করতে পারে তবে হঠাৎ কোনও কারণে আপাতদৃষ্টিতে ব্যর্থ হয়। এবং তাই এগিয়ে।
যা যা বলা হচ্ছে, গ্রাফিকাল কৌশল শেখার চেয়ে গ্রাফিক্স শেখার আরও অনেক কিছুই রয়েছে। বিশেষত একটি অঞ্চল যেখানে ভুলকান জিতেছে।
গ্রাফিকাল পারফরম্যান্স ।
3 ডি গ্রাফিক্স প্রোগ্রামার হওয়ার জন্য সাধারণত আপনার কোডটি কীভাবে অনুকূল করা যায় সে সম্পর্কে কিছু ধারণা প্রয়োজন। এবং এখানেই ওপেনজিএলের তথ্য গোপন করা এবং আপনার পিছনে জিনিসগুলি করা একটি সমস্যা হয়ে দাঁড়ায়।
ওপেনজিএল মেমরির মডেলটি সিঙ্ক্রোনাস। ব্যবহারকারী যতক্ষণ পার্থক্য বলতে না পারে ততক্ষণ বাস্তবায়নকে অযৌক্তিকভাবে আদেশগুলি প্রদানের অনুমতি দেওয়া হয়। সুতরাং আপনি যদি কিছু চিত্র রেন্ডার করেন, তবে এটি থেকে পড়ার চেষ্টা করুন, বাস্তবায়ন অবশ্যই এই দুটি কাজের মধ্যে একটি সুস্পষ্ট সিঙ্ক্রোনাইজেশন ইভেন্ট জারি করবে।
ওপেনজিএলে পারফরম্যান্স অর্জনের জন্য আপনাকে জানতে হবে বাস্তবায়নগুলি এটি করে, যাতে আপনি এড়াতে পারেন । আপনাকে বুঝতে হবে কোথায় বাস্তবায়ন গোপনে সিঙ্ক্রোনাইজেশন ইভেন্ট জারি করছে এবং তারপরে যতটা সম্ভব এড়াতে আপনার কোডটি পুনরায় লিখুন। তবে এপিআই নিজেই এটিকে সুস্পষ্ট করে না; আপনি কোথাও থেকে এই জ্ঞান অর্জন করতে হবে।
ভুলকানের সাথে ... আপনিই সেই সিঙ্ক্রোনাইজেশন ইভেন্টগুলি ইস্যু করতে পারেন। সুতরাং, হার্ডওয়্যারটি সিঙ্ক্রোনিকভাবে কমান্ডগুলি কার্যকর করে না সে সম্পর্কে আপনাকে অবশ্যই সচেতন হতে হবে । আপনাকে কখন অবশ্যই এই ইভেন্টগুলি ইস্যু করতে হবে তা অবশ্যই জেনে রাখা উচিত এবং তাই আপনাকে অবশ্যই সচেতন হতে হবে যে তারা সম্ভবত আপনার প্রোগ্রামকে ধীর করে দেবে। সুতরাং এগুলি এড়ানোর জন্য আপনি যথাসাধ্য চেষ্টা করুন।
ভুলকানের মতো সুস্পষ্ট এপিআই আপনাকে এই জাতীয় পারফরম্যান্সের সিদ্ধান্ত নিতে বাধ্য করে। এবং অতএব, আপনি যদি ভলকান এপিআই শিখেন তবে কোন জিনিসগুলি ধীরে ধীরে চলবে এবং কোনটি জিনিসগুলি দ্রুত হতে চলেছে সে সম্পর্কে আপনার ইতিমধ্যে ভাল ধারণা রয়েছে।
যদি আপনাকে এমন কিছু ফ্রেমবফার কাজ করতে হয় যা আপনাকে একটি নতুন রেন্ডারপাস তৈরি করতে বাধ্য করে ... প্রতিক্রিয়াগুলি ভাল যে আপনি এটি রেন্ডারপাসের একটি পৃথক সাবপাসে ফিট করতে পারলে এটি ধীর হবে। এর অর্থ এই নয় যে আপনি এটি করতে পারবেন না, তবে এপিআই আপনাকে সামনেই বলে দেয় যে এটি কোনও পারফরম্যান্স সমস্যার কারণ হতে পারে।
ওপেনজিএলে, এপিআই মূলত আপনাকে আপনার ফ্রেমবফার সংযুক্তিগুলি উইলি-নিলি পরিবর্তনের জন্য আমন্ত্রণ জানায়। পরিবর্তনগুলি দ্রুত বা ধীর হবে এমন কোনও নির্দেশিকা নেই।
সুতরাং সেই ক্ষেত্রে, ভলকান শেখা কীভাবে গ্রাফিক্সকে আরও দ্রুততর করা যায় সে সম্পর্কে আরও ভালভাবে আপনাকে সহায়তা করতে পারে। এবং এটি অবশ্যই আপনাকে সিপিইউ ওভারহেড হ্রাস করতে সহায়তা করবে।
আপনি গ্রাফিকাল রেন্ডারিং কৌশলগুলি শিখতে পারেন এমন পয়েন্টে পৌঁছাতে আরও অনেক বেশি সময় লাগবে।