ফিক্সড-ফাংশন বনাম শেডারস: প্রাথমিকের জন্য কোনটি?


16

আমি বর্তমানে কম্পিউটার বিজ্ঞানের জন্য কলেজে যাচ্ছি। যদিও আমি একটি ছোট গেম তৈরির জন্য কোনও মুহুর্তে বিদ্যমান ইঞ্জিনটি ব্যবহার করার পরিকল্পনা করি, তবে এখনই আমার লক্ষ্য মৌলিক বিষয়গুলি শেখার দিকে: যথা, 3 ডি প্রোগ্রামিং। আমি ডাইরেক্টএক্স এবং ওপেনজিএল-এর মধ্যে পছন্দ সম্পর্কে ইতিমধ্যে কিছু গবেষণা করেছি এবং এর মধ্যে যে সাধারণ অনুভূতিটি প্রকাশ পেয়েছিল তা হ'ল আপনি ওপেনজিএল বা ডাইরেক্টএক্সকে আপনার প্রশিক্ষণ চাকার প্ল্যাটফর্ম হিসাবে বেছে নিই না কেন, প্রচুর জ্ঞান অন্য প্ল্যাটফর্মে স্থানান্তরযোগ্য । সুতরাং, যেহেতু ওপেনজিএল আরও সিস্টেম দ্বারা সমর্থিত (সম্ভবত কী শিখতে হবে তা বেছে নেওয়ার মূর্খ কারণ), আমি সিদ্ধান্ত নিয়েছি যে আমি প্রথমে ওপেনএল শিখছি।

ওপেনজিএল শিখার জন্য আমি এই সিদ্ধান্ত নেওয়ার পরে, আমি আরও কিছু গবেষণা করেছিলাম এবং একটি দ্বিদৃষ্টি সম্পর্কে জানতে পেরেছিলাম যে এই সময়ের জন্য আমি কোনওভাবেই অজানা ছিলাম: ফিক্সড-ফাংশন ওপেনজিএল বনাম আধুনিক প্রোগ্রামেবল শেডার-ভিত্তিক ওপেনজিএল। প্রথমদিকে, আমি ভেবেছিলাম এটি একটি সুস্পষ্ট পছন্দ যা আমাকে শেড-ভিত্তিক ওপেনজিএল শিখতে বেছে নেওয়া উচিত যেহেতু আজকের এই শিল্পে সবচেয়ে বেশি ব্যবহৃত হয়। তবে, আমি এখানে অবস্থিত জেসন এল। ম্যাককেসনের খুব জনপ্রিয় লার্নিং মডার্ন 3 ডি গ্রাফিক্স প্রোগ্রামিংয়ে হোঁচট খেয়েছি: http://www.arcsynthesis.org/gltut/

আমি প্রারম্ভিক বিটগুলির মাধ্যমে পড়েছি এবং "এই বই সম্পর্কে" বিভাগে লেখক বলেছেন:

"প্রথমে, এই পদ্ধতির সাথে যা শিখেছে তার বেশিরভাগটি অবশ্যই অনিবার্যভাবে ত্যাগ করতে হবে যখন ব্যবহারকারী যখন গ্রাফিক্সের সমস্যার মুখোমুখি হন যা অবশ্যই প্রোগ্রামযোগ্যতার সাথে সমাধান করতে হবে। প্রোগ্রামেবলিবিলিটি প্রায় সমস্ত স্থির ফাংশন পাইপলাইন মুছে দেয়, তাই জ্ঞানটি সহজেই স্থানান্তর করে না।"

তবুও একই সাথে এটি ক্ষেত্রেও তৈরি করে যে স্থির-কার্যকারিতাটি সূচিত করে নতুনদের জন্য সহজ, আরও তাত্ক্ষণিক শেখার বক্ররেখা সরবরাহ করে:

"স্থির ফাংশন পাইপলাইন ব্যবহার করে নিওফাইট গ্রাফিক্স প্রোগ্রামারগুলি শেখানো সাধারণত সহজ বলে বিবেচিত হয়।"

স্বভাবতই, আপনি দেখতে পাচ্ছেন যে কোন দৃষ্টান্তটি শিখতে হবে সে সম্পর্কে কেন আমার বিবাদ হতে পারে: আমি কি স্থির-কার্যকারিতাটির উপায়গুলি শিখতে (এবং তারপরে পরে অবহিত না করে) অনেক সময় ব্যয় করি, বা আমি ছায়ার সাথে শুরু করার পছন্দ করি? আমার প্রাথমিক উদ্বেগটি হ'ল আধুনিক প্রোগ্রামযোগ্য ছায়ার ক্ষেত্রে কোনওভাবেই প্রোগ্রামারকে স্থির-ফাংশন পাইপলাইনটি বোঝার প্রয়োজন হয়, তবে আমি সন্দেহ করি যে এটিই ঘটেছে।

টিএল; ডিআর = একটি উচ্চাকাঙ্ক্ষী গেমের গ্রাফিক্স প্রোগ্রামার হিসাবে, স্থির-কার্যকারিতা বা আধুনিক শেডার-ভিত্তিক প্রোগ্রামিংয়ের মাধ্যমে 3 ডি প্রোগ্রামিং শিখাই আমার পক্ষে সবচেয়ে বেশি আগ্রহী?


এর সাথে এই জাতীয় কিছু প্রশ্ন রয়েছে ...
নোটিশ

"তবুও একই সাথে এটি কেসও করে তোলে যে স্থির-কার্যকারিতা নতুনদের জন্য একটি সহজ এবং আরও তাত্ক্ষণিক শিক্ষার বক্ররেখা প্রদান করে বলে:" আমি কৌতূহলী। কীভাবে যে কেসটি তৈরি করে? কারণ উক্তিটি স্পষ্টতই বলেছে, "এটিকে সাধারণত সহজতম ..." হিসাবে বিবেচনা করা হয় (জোর দেওয়া হয়েছে)। হিসাবে এটি সত্য হিসাবে বিবেচিত হতে পারে , কিন্তু এর অর্থ এটি সত্য নয়।
নিকল বোলাস

হ্যাঁ এটি শব্দের একটি বিশ্রী উপায় ছিল।
রব হেজে

ফিক্সড-ফাংশন পাইপলাইনটি ওপেনজিএল এবং ডাইরেক্টএক্স উভয়ই হ্রাস করা হয়েছে, সুতরাং আমি এটি দিয়ে আপনার সময় নষ্ট করব না। বেসিক শেডারগুলি বেশ সোজা, এবং রেন্ডারিং প্রসঙ্গে কাজ করার জন্য যথেষ্ট বোঝার চেয়ে জটিল কোনও বিষয় নয়।
ডিভে

উত্তর:


30

আমি স্থির-ফাংশন স্টাফ দিয়ে শুরু করা সহজ যে যুক্তিটি কিনছি না। এটি এমন ক্ষেত্রে হতে পারে যে ফিক্সড-ফাংশন আপনাকে কম কোড দিয়ে কিছু কিছু করতে দেয় - ফিক্সড-ফাংশন ওপেনজিএলে, উদাহরণস্বরূপ, আপনি কিছু খুব বেসিক লাইটিং / শেডিং glEnable(GL_LIGHTING)এবং অন্যান্য কয়েকটি কল করে যেতে পারেন। সমস্যাটি হ'ল আপনি কিছুটা আলাদা করার সাথে সাথে - প্রতি পিক্সেল আলো, প্রতি-ভার্টেক্স আলোক পরিবর্তে বলুন - আপনাকে স্থির-ফাংশনটি পুরোপুরি ছেড়ে দিতে হবে এবং আপনি যে নির্দিষ্ট স্থায়িত্ব ব্যবহার করছিলেন তা উভয়ই প্রয়োগ করতে একটি শেডার লিখতে হবে have আগে, প্লাস যা আপনি পরিবর্তন করতে চেয়েছিলেন।

দেখে মনে হচ্ছে পুরো সময়টি ছায়ার ব্যবহার করা সহজ এবং কম বিভ্রান্তিকর হবে। শেডারদের আরও কিছু সেটআপ কাজ করা দরকার কারণ আপনার একটি পৃথক উত্স ফাইল রয়েছে যা লোড এবং সংকলন করা দরকার, কিছু অতিরিক্ত সি কলগুলি দেখতে হবে এবং প্যারামিটারগুলি সেট করতে হবে ইত্যাদি। তবে একবার আপনি শ্যাডারে যাওয়ার পরে এটি সবচেয়ে সহজ জিনিস thing কয়েকটি ভিন্ন প্রভাবের কোড দেওয়ার জন্য, বিভিন্ন ধারণা ইত্যাদি চেষ্টা করে দেখুন ইত্যাদি And শেডাররা আপনার জন্য কোড লিখতে পারে যা কিছু করতে পারে, পারফরম্যান্স এবং মেমরির স্বাভাবিক সীমাবদ্ধ করে ul


শীতল, প্রতিক্রিয়া জন্য ধন্যবাদ। আমি সম্ভবত ছায়া গো জন্য ডান দিকে যেতে সম্ভবত।
রব হেজে

3
+1 - এটি "লার্নিং সি ++" বনাম "লার্নিং বেসিক" এর মতো দয়ালু। সি ++ শিখতে আপনাকে আরও সময় লাগবে তবে আপনি দীর্ঘ মেয়াদে আরও শিখতে পারবেন।
জোনাথন ডিকিনসন

3
আমি সুপারিশ করতে চাই opengl-tutorial.org । সাইটটি বেসিকগুলি বেশ সুন্দরভাবে ব্যাখ্যা করে এবং কেবল শেডার ব্যবহার করে।
এক্সিলি

3

আমি GLUT এ স্থির ফাংশন দিয়ে শুরু করতে বলব। আমি এ সম্পর্কে খুব বেশি বলতে চাই না, তবে শেডারগুলির পিছনে থাকা ধারণাগুলি বেশ জটিল এবং প্রয়োজনীয় জ্ঞানটি বেসিক 3 ডি প্রোগ্রামিং (যেমন ভার্টেক্স তৈরি এবং রূপান্তর ম্যাট্রিকেস ইত্যাদি)। শেডার ব্যবহার করে আপনি আরও অনেকগুলি জায়গা স্ক্রু করতে পারেন, কোডে আরও অনেক কিছু রয়েছে।

আমার টিউটোরিয়াল এবং এই বাতিঘর 3 ডিগুলি দেখুন


2

আমি দ্বিতীয় ছায়া গো জন্য সরাসরি যাচ্ছি। এটা সত্যিই না যে অনেক বেশি কঠিন সেট আপ করার জন্য, এবং যখন আপনি যে প্রথম হার্ডল পাস আপনি আপনার নখদর্পণে পূর্ণ ক্ষমতা আছে।

আরও উল্লেখযোগ্য বিষয়, আপনি দেখতে পাবেন যে শেডার প্রোগ্রামিং আপনার কলেজের বই এবং গ্রাফিক্স বক্তৃতাগুলিতে যে গাণিতিক সমীকরণগুলি দেখছেন তার সাথে আরও ঘনিষ্ঠভাবে মিলছে।


0

আমি আপনার প্রোগ্রামের মেরুদণ্ড হিসাবে স্থির ফাংশন পাইপলাইনটি ব্যবহার করার পরামর্শ দেব। খাঁটি শেডারের পরিবর্তে কিছু ব্যবহার করে দেখানো আমার কাছে সহজ মনে হয়েছে। তারপরে, যখন আপনি জানেন যে আপনি নিজের শীর্ষগুলি বা নরমালগুলিকে গোলমাল করেননি, আপনি আস্তে আস্তে কিন্তু অবশ্যই ছায়া বিশ্বে আপনার পথে যেতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.