খাঁটি ওপেনজিএল বা জিএলএসএল যাবেন? [বন্ধ]


11

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

এখানেই আমি আমার প্রথম সমস্যার মধ্যে পড়েছিলাম, কিছু হার্ডওয়্যার জিএলএসএল সমর্থন করে না, এর সাথে ইন্টেল ইন্টিগ্রেটেড গ্রাফিক্স সহ নোটবুক যা আমি ব্যবহারের পরিকল্পনা করেছিলাম। কাজ

GLuint vertShader = glCreateShader(GL_VERTEX_SHADER);

সেগমেন্টেশন ত্রুটি সৃষ্টি করে এবং এর চেহারা থেকে আমার ড্রাইভার শেডারগুলি সমর্থন করে না

সুতরাং আমার প্রশ্নটি হল, কেবল ওপেনগিএলে একটি গেম তৈরি করার কার্যকারিতা কী? আমি শেডার ভাষা থেকে অপরিবর্তনীয় ভাল বৈশিষ্ট্যগুলি হারিয়ে যাব? এবং কোন ধরণের হার্ডওয়্যার (পুরানো জেনার আই 3, আই 5, আই 7, পুরাতন ভিজিএ) আমি শেডারগুলির সাথে সঠিকভাবে কোনও গেমটি চালানোর আশা করতে পারি?


1
GLSL হয় যেমন OpenGL, আমি আপনার প্রশ্নের কিনা হার্ডওয়্যার আপনি ব্যবহার উপর মনস্থ করা যেমন OpenGL 3 সামঞ্জস্যপূর্ণ, বিশেষভাবে সামঞ্জস্যপূর্ণ GLSL না সম্পর্কযুক্ত মনে করি।
deceleratedcaviar

@ ড্যানিয়েল তাই যদি কোনও হার্ডওয়্যার / ড্রাইভার ওপেনগিএল ৩.০ সামঞ্জস্যপূর্ণ হয় তবে এটি জিএলএসএল উপযুক্ত?
ইব্রাহিবিকার

1
জিএলএসএল ওপেনজিএল 3.0 স্পেসিফিকেশনের অংশ, সুতরাং হ্যাঁ, এটি ক্ষেত্রে।
মিথ্যাচারিত

1
আপনি বলছেন, "এর চেহারা থেকে আমার ড্রাইভার ছায়াময়কারীদের সমর্থন করে না।" আপনি ওপেনগিএলের কোন সংস্করণ পাচ্ছেন? আপনি কি সমস্ত উপলব্ধ ওপেনএলএল ফাংশন সঠিকভাবে লোড করছেন?
নিকল বোলাস

1
@ পাপাভাইকোস: যদি এটি শূন্য ফেরত দেয় তবে শেডার ব্যবহার করা উচিত কিনা তার চেয়ে আপনার অনেক বড় সমস্যা হয়েছে। আপনি কি আপনার ওপেনএল প্রসঙ্গটি সঠিকভাবে তৈরি করছেন? মনে রাখবেন: আপনার কোনও বৈধ প্রসঙ্গ তৈরি এবং বর্তমান তৈরি না হওয়া পর্যন্ত আপনি কোনও জিএল ফাংশন কল করতে পারবেন না।
নিকল বোলাস

উত্তর:


9

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

হার্ডওয়্যার-ভিত্তিক আপনি কিছুটা ডিগ্রী শেডার সমর্থন পেতে গত 5/6/7 বছরে মুক্তিপ্রাপ্ত প্রায় যে কোনও বিষয়ের উপর নির্ভর করতে পারেন, তবে - পুরানো ইনটেলের ক্ষেত্রে (কিছু 9 9 এক্স সিরিজের) - এটি জিএলএসএল হতে চলেছে না, তবে পরিবর্তে এটি হবে পুরানো জিএল_আরবি_ভারটেক্স_প্রগ্রাম এবং জিএল_আরবি_ফ্রেগমেন্ট_প্রগ্রাম এক্সটেনশন। এগুলি একটি সমাবেশ ভাষার মতো শেডার ভাষা ব্যবহার করে তবে স্বীকারোক্তি সময় - আমি ব্যক্তিগতভাবে এটির বেশ পছন্দ করি। এটি ব্যবহার করা আসলে বেশ সহজ, যদি আরও কিছু আধুনিক বৈশিষ্ট্যের অভাব হয় (যেমন ব্রাঞ্চিং) এবং একই জিনিসটি করার জন্য শ্যাডার কোডের আরও লাইন প্রয়োজন হয়। এই এক্সটেনশনের জন্য আপনার মূল প্রোগ্রামে প্রয়োজনীয় সহায়তামূলক অবকাঠামো জিএলএসএল এর চেয়ে অনেক বেশি লাইটওয়েট।

এটি অবশ্য বলার অপেক্ষা রাখে না যে আমি তাদের জিএলএসএল এর উপরে সুপারিশ করব, তবে তারা এমন একটি বিকল্প যা আপনার যদি সত্যই এই ক্লাসটির হার্ডওয়্যার চালানোর প্রয়োজন হয় এবং তাদের উপস্থিতি সম্পর্কে সচেতন হওয়া কার্যকর হয় যা আমাকে চূড়ান্ত পর্যায়ে নিয়ে আসে । আপনি কি সত্যই নিশ্চিত যে আপনার এই ক্লাসটির হার্ডওয়্যারটি চালানোর দরকার আছে (যেমন আপনার নোটবুকের ক্ষেত্রে আপনি কেবল প্রবেশের পয়েন্ট পেতে অবহেলিত থাকতে পারেন)?


আমি মেসা 3 ডি এখনও ওপেনগল ২.১ স্পেসিফিকেশনটিতে রয়েছি এ বিষয়টি সম্পূর্ণ উপেক্ষা করেছি। আমি এটি ঠিক করব
ইব্রাহিবিক

6

এটিও লক্ষ করা উচিত যে আর কোনও "খাঁটি ওপেনজিএল" নেই।

ওপেনজিএল ইএস ২.০ সমস্ত নন শেডার স্টাফ আঁকিয়েছে এবং যেহেতু ওয়েবজিএল এটির উপর নির্ভরশীল, এটি খুব শেডারের সাথেই কাজ করে। ওপেনএল 3.0 the ফিক্সড-ফাংশন স্টাফের সমস্ত হ্রাস করে এবং 3.1 এটিকে সরিয়ে দেয় (মূল প্রোফাইলগুলিতে। বেশিরভাগ বাস্তবায়নই সামঞ্জস্যতা প্রোফাইলগুলিকে সমর্থন করে, তবে ম্যাকোএসএক্স তাদের 3.2 বাস্তবায়নের জন্য সমর্থন করে না)।

সুতরাং আমি নন শেডার ওপেনজিএল শেখার পরামর্শ দেব না।


6

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

জিপিইউর জন্য প্রোগ্রাম লেখার শক্তি থাকায় আমি অবশ্যই জিএলএসএলের দিকে যাব।

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