ওপেনজিএল সংস্করণ (গুলি) কী শিখতে এবং / অথবা ব্যবহার করতে পারে?


16

সুতরাং, আমি ওপেনজিএলে নতুন ... গেম প্রোগ্রামিং সম্পর্কে আমার সাধারণ জ্ঞান আছে তবে ব্যবহারিক অভিজ্ঞতা খুব কম।

আমি বিভিন্ন নিবন্ধ এবং বইগুলি সন্ধান করেছি এবং ওপেনজিএলে ডুব দেওয়ার চেষ্টা করেছি, তবে বিভ্রান্তিকর জিনিসগুলি করার বিভিন্ন সংস্করণ এবং পুরানো বনাম নতুন উপায় খুঁজে পেয়েছি।

আমার অনুমান আমার প্রথম প্রশ্নগুলি কি কেউ গেমারদের শতাংশ সম্পর্কে কিছু পরিসংখ্যান জানেন যা ওপেনগিএল এর প্রতিটি সংস্করণ চালাতে পারে? বাজারের শেয়ার কেমন? 2.x, 3.x, 4.x ...

আমি হাফ লাইফ 2 এর প্রয়োজনীয়তাগুলি খতিয়ে দেখলাম যেহেতু আমি জানি যে ভালভ ম্যাকের উপরে চলার জন্য ওপেনজিএল দিয়ে এটি আপডেট করেছিলেন এবং আমি জানি তারা সাধারণত খুব প্রশস্ত ব্যবহারকারী-বেসকে আঘাত করার চেষ্টা করে এবং তারা ন্যূনতম জিফর্স 8 সিরিজ বলে। আমি এনভিডিয়া ওয়েবসাইটে 8800 জিটি দেখেছি এবং এটি ওপেনএল 2.1 এর জন্য সমর্থন তালিকাভুক্ত করেছে। কোনটি, সম্ভবত আমি ভুল, আমার কাছে প্রাচীন মনে হচ্ছে যেহেতু ইতিমধ্যে 4.x আছে since আমি 8800GT এর জন্য একটি ড্রাইভারের দিকে চেয়েছিলাম এবং এটি বলছে এটি 4.2 সমর্থন করে! ওখানে কিছুটা তাত্পর্য, লোল।

আমি এক্সপি যেমন কিছু নির্দিষ্ট সংস্করণ পর্যন্ত সমর্থন করে বা ওএস এক্স কেবল ৩.২, বা অন্যান্য ধরণের অন্যান্য বিষয়কে সমর্থন করে things সামগ্রিকভাবে, আমি বিভিন্ন সংস্করণে কতটা সমর্থন এবং কোন সংস্করণ শিখতে / ব্যবহার করব তা নিয়ে আমি কেবল বিভ্রান্ত।

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

আমি যা বুঝতে পেরেছি সেখান থেকে 3.x কাজ করার সম্পূর্ণ নতুন পদ্ধতি শুরু করেছে এবং আমি বিভিন্ন নিবন্ধ এবং পর্যালোচনাগুলি থেকে পড়েছি যে আপনি "glBegin (), glEnd ()" এর মতো অবজ্ঞাত বৈশিষ্ট্যগুলি থেকে দূরে থাকতে চান তবে এখনও প্রচুর বই এবং টিউটোরিয়াল আমি যে পদ্ধতিটি ব্যবহার করেছি। আমি লোকদের বলতে দেখেছি যে, মূলত জিনিসগুলি করার নতুন পদ্ধতিটি আরও জটিল তবে পুরানো উপায়টি খারাপ>>>

একটি পার্শ্ব নোট, ব্যক্তিগতভাবে, আমি জানি যে আমার এখনও আগে থেকে অনেক কিছু শিখতে হবে তবে আমি পরীক্ষায় আগ্রহী; সুতরাং আমি অনুমান করি যে এটিগুলির মধ্যে এটিও রয়েছে কারণ কারণ আমি যতটা বুঝতে পেরেছি এটি কেবলমাত্র ৪.x এ?

[শুধু বিটিডব্লিউ, আমার ডেস্কটপ ৪.২ সমর্থন করে]


এই প্রশ্নটি (স্ট্যাক ওভারফ্লোতে) একটি সদৃশ বলে মনে হচ্ছে: stackoverflow.com/questions/6823371/…
অ্যান্ডারসন গ্রিন

উত্তর:


21

আপনি যদি ওপেনজিএল কভারেজ সম্পর্কে ভাবছেন তবে শুরু করার জন্য একটি ভাল জায়গা হ'ল স্টিম হার্ডওয়্যার জরিপ।

http://store.steampowered.com/hwsurvey?platform=pc

দুর্ভাগ্যক্রমে, এখনই এটি নষ্ট হয়ে গেছে বলে মনে হচ্ছে এবং এটি ভিডিও কার্ডের কোনও পরিসংখ্যান প্রদর্শন করে না। : \

আমি এক্সপি এর মতো জিনিসগুলি কেবল একটি নির্দিষ্ট সংস্করণ পর্যন্ত সমর্থন করি read

ডাইরেক্টএক্স 9 ওপেনজিএল 2.1, ডাইরেক্টএক্স 10 থেকে ওপেনএল 3.0 এবং ডাইরেক্টএক্স 11 এর সাথে ওপেনজিএল 4.0 এর সাথে তুলনাযোগ্য। এখান থেকেই বিভ্রান্তি থেকেই যায়।

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

আমি যা বুঝতে পেরেছি সেখান থেকে 3.x কাজ করার সম্পূর্ণ নতুন পদ্ধতি শুরু করেছে এবং আমি বিভিন্ন নিবন্ধ এবং পর্যালোচনাগুলি থেকে পড়েছি যে আপনি "glBegin (), glEnd ()" এর মতো অবজ্ঞাত বৈশিষ্ট্যগুলি থেকে দূরে থাকতে চান তবে এখনও প্রচুর বই এবং টিউটোরিয়াল আমি যে পদ্ধতিটি ব্যবহার করেছি। আমি লোকদের বলতে দেখেছি যে, মূলত জিনিসগুলি করার নতুন পদ্ধতিটি আরও জটিল তবে পুরানো উপায়টি খারাপ>>>

ওপেনজিএল এটি খুব বড় সমস্যা। মূলত, পুরানো দিনগুলিতে, আপনি "তাত্ক্ষণিক মোড" ব্যবহার করে ভিডিও কার্ডগুলিতে স্টাফ পাঠাতেন। দিয়ে শুরু করুন glBegin, কিছু স্টাফ করুন, শেষ করুন glEnd। তবে ভিডিও কার্ড ড্রাইভাররা এটিকে মোটেই পছন্দ করেন না । আপনি কী পরিমাণ জিনিস প্রেরণ করতে চলেছেন তা তারা কীভাবে জানতে পারে? এটি কি টেক্সচার্ড কোয়াডের জন্য 4 টি শীর্ষ বা চামড়াযুক্ত মডেলের জন্য 100,000 হতে চলেছে? এ কারণেই তারা ভার্টেক্স বাফার অবজেক্ট (ভিবিও) প্রবর্তন করেছিল। তাত্ক্ষণিক মোড একটি লিঙ্কযুক্ত তালিকাগুলি, একটি ভিবিও একটি স্ট্যাটিক অ্যারে। বিকাশকারী জানেন যে এটি কতটা বড়, ড্রাইভার জানে যে এটি কতটা বড়। সবাই খুশি। সুতরাং ওপেনজিএল স্ট্যান্ডার্ড বোর্ড (খ্রোনস গ্রুপ) ওপেনজিএল 3.0 এবং তার জন্য তাত্ক্ষণিক মোডকে হ্রাস করার সিদ্ধান্ত নিয়েছে। তবে এটি সমস্যাযুক্ত কারণ আমি একটি সাধারণ উদাহরণ দিয়ে দেখাব with

ধরা যাক আপনি স্ক্র্যাচ থেকে শুরু করে একটি টেক্সচার্ড কোয়াড প্রদর্শন করতে চান।

ওপেনজিএল ২.১ এ:

  • প্রজেকশন ম্যাট্রিক্স সেট আপ করুন এবং এটি স্থাপন করুন GL_PROJECTION
  • মডেলভিউ ম্যাট্রিক্স সেট আপ করুন এবং এতে রাখুন GL_MODELVIEW
  • একটি চিত্র লোড করুন এবং একটি GL_TEXTURE_2Dহ্যান্ডেল এ রাখুন।
  • আপনার উল্লম্বের জন্য অবস্থানগুলি, টেক্সচারের স্থানাঙ্ক এবং রঙগুলি সংজ্ঞায়িত করুন।
  • জমিন বাঁধুন।
  • glBegin... glVertex2f... glTexCoord2f... glEnd

ওপেনজিএল 3.0 এ:

  • অভিক্ষেপ এবং মডেলভিউয়ের জন্য একটি ম্যাট্রিক্স তৈরি করুন।
  • একটি চিত্র লোড করুন এবং একটি GL_TEXTURE_2Dহ্যান্ডেল এ রাখুন।
  • আপনার উল্লম্বের জন্য অবস্থানগুলি, টেক্সচারের স্থানাঙ্ক এবং রঙগুলি সংজ্ঞায়িত করুন এবং সেগুলিকে ভিবিওতে রাখুন।
  • একটি ভার্টেক্স অ্যারে অবজেক্ট (VAO এর) তৈরি করুন এবং আপনার ভিবিও'র সংযুক্ত করুন।
  • টেক্সচার্ড কোয়াড আউটপুট করতে শেডার লিখুন এবং একটি শ্যাডার প্রোগ্রামে রাখুন।
  • ইউনিফর্ম ব্যবহার করে শেডার প্রোগ্রামে ম্যাট্রিকগুলি সংযুক্ত করুন।
  • জমিন বাঁধুন।
  • শেডার প্রোগ্রামে টেক্সচারটি সংযুক্ত করুন।
  • glDrawArrays

তাহলে প্রথম সংস্করণে কী ভুল হতে পারে?

  • আপনার অবস্থানগুলি ভুল।
  • আপনার ভার্টেক্স ঘুরিয়ে দেওয়া প্রায় ভুল পথ।
  • আপনার জমিন সঠিকভাবে লোড হয় না।
  • আপনার জমিন সঠিকভাবে আবদ্ধ হয় না।
  • আপনার প্রজেকশন ম্যাট্রিক্স ভুল।
  • আপনার মডেলভিউ ম্যাট্রিক্স ভুল।
  • আপনি সঠিক শিখুন প্রেরণ করছেন না।

এবং দ্বিতীয় সংস্করণে, আপনি উপরের সমস্যাগুলি এবং :

  • আপনার ভিবিও ভুল আছে।
  • আপনার ভিএও ভুল।
  • আপনার শেডার ভুল।
  • শেডারের সাথে আপনার টেক্সচার বাঁধাই ভুল।

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

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


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

2
তবে এটাই আমার অর্থ হ'ল: এখন আপনার বাগটি আপনার ডেটাতে (ভারটেক্স ডেটা এবং টেক্সচার অবজেক্ট), আপনার শেডার প্রোগ্রাম, আপনার শেডার কোড, আপনার ম্যাট্রিকেস, আপনার ইউনিফর্ম আপলোড বা আপনার ভিএও বন্ডিং হতে পারে। আপনি যদি কিছু থেকে শুরু না করেন , এটি চেক করার জন্য অনেকগুলি সাবসিস্টেম! এবং আপনাকে আরও অনেক কিছুর উপরে নজর রাখতে হবে।
নাইট 666

1
দ্রষ্টব্য যে গ্রিমডি সাইট থেকে জিডিইবাগারটির মেয়াদ শেষ। তাদের ফোরামগুলি দীর্ঘ সময়ের জন্য বন্ধ থাকায় আমি পরিত্যক্ত বলে ধরে নিয়েছি। সরঞ্জামটি এটিএমডি : জিডিইবাগার দ্বারা বাছাই করেছে ।
মাইকেলহাউস

2
"glBegin ... glVertex2f ... glTexCoord2f ... glEnd।" শুধুই না. glBegin, glVertex ইত্যাদি কখনই ঠিক ছিল না। glDrawArrays ওপেনজিএল 1.1 (1997) এ চালু হয়েছিল এবং সর্বদা glBegin এবং শেষের মধ্যে ব্যবহার করা উচিত।
এপিআই-বিস্ট

9

হার্ডওয়্যার সামঞ্জস্যতা সম্পর্কে কিছু পরিসংখ্যানগুলির জন্য আপনি বাষ্প সমীক্ষার দিকে নজর রাখতে পারেন: http://store.steampowered.com/hwsurvey/ যদিও এটি ডিএক্স 10 এবং ডিএক্স 11 তালিকাবদ্ধ করে, হার্ডওয়্যার সামঞ্জস্যতা যথাক্রমে ওপেনজিএল 3 এবং ওপেনজিএল 4 এর সমান। যদিও খেয়াল করুন যে ওপেনজিএল ড্রাইভার ইনস্টলেশন অবস্থা লোকেরা সাধারণত ডিএক্সের চেয়ে খারাপ হয়।

উইন্ডোজ এক্সপি DX10 বা DX11 সমর্থন করে না, তবে ড্রাইভারগুলি ঠিক আছে তবে ওপেনজিএল 3 এবং 4 ভাল হওয়া উচিত। ওএসএক্স ওপেনজিএল 3 সমর্থন করে (সর্বাধিক) লিনাক্সে আপনি এটিআই / এনভিআইডিআইএ বিক্রেতাদের সাথে ওপেনজিএল 4 পাবেন (অবশ্যই কেবল হার্ডওয়্যার সমর্থন করলে)।

তারপরে ওপেনজিএলের মোবাইল ইএস সংস্করণও রয়েছে। আসলে আমি ওপেনজিএল ইএস ২.০ সন্ধান করার পরামর্শ দিচ্ছি, কারণ এটি ছোট, শিখতে এত সহজ, তবে আপনাকে আধুনিক পদ্ধতিগুলি যেমন শেডার এবং ভিবিওও ব্যবহার করতে হবে। এটি বেশিরভাগ মোবাইল ডিভাইসে কী ব্যবহার করা হয় (তাই আপনি মোবাইল গেমস তৈরিতে ডুবে যাবেন) এবং ওয়েবজিএলও মূলত একই, তাই আপনি ওয়েব ব্রাউজারে এটির দ্রুত বিকাশের সুবিধার সাহায্যে আপনার সমস্ত শিক্ষাই করতে পারেন। এই গ্রীষ্মে ওপেনজিএল ইএস 3.0 due

টেসলেশন হ'ল একটি ওপেনএল 4.0 বৈশিষ্ট্য। আপনার প্রথমে অন্যান্য ধরণের শেডারগুলি শিখতে হবে, সমস্ত বেসিকটি একা ছেড়ে দিন, তবে আমি একমত যে এটি আকর্ষণীয় - আসলে আমি এটির সাথে একটি সামান্য পরীক্ষা লিখেছি: http://blog.tapiov.net/post/15189341463/playing- সঙ্গে-OpenGL-4-চৌখুপী অংকন


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