ওপেনজিএল, এসএফএমএল এবং এসডিএল সফ্টওয়্যার রেন্ডারিংয়ের কী কী সুবিধা পাবে?


24

আমি হ্যান্ডমেড হিরো স্ট্রিমটি দেখতে শুরু করেছি , যেখানে ক্যাসি মুরেরি ফ্রেমওয়ার্ক বা এ জাতীয় ব্যবহার না করে একটি গেম ইঞ্জিন তৈরি করে। গতকাল আমি সেই অংশে পৌঁছেছি যেখানে তিনি দেখিয়েছিলেন কীভাবে কোনও চিত্র স্ক্রিনে টানা হয়। আমি যতদূর বুঝতে পেরেছি সে কেবলমাত্র তার পর্দার আকার আঁকতে চায় তার আকারের চেয়ে কিছু মেমরি বরাদ্দ করেছে। এবং তারপরে তিনি একটি বিটম্যাপ তৈরি করেছিলেন যা তিনি বরাদ্দ করা বাফার মেমরিটিতে পৌঁছে দিয়ে একটি ওএস নির্দিষ্ট ফাংশন ব্যবহার করে এটি স্ক্রিনে আঁকেন।

এটি বেশ সোজা এগিয়ে মনে হচ্ছে। আমি গেমমেকার ব্যবহার করেছি, লাভ 2 ডি তে পরিবর্তিত হয়েছি, স্প্রেট কিটের সাথে কিছুটা কাজ করেছি তবে আমি সবসময় ভাবছিলাম যে এই কখনও কখনও বিভ্রান্তিকর স্তরগুলির নীচে আসলে কী ঘটছে।

এটি দেওয়া হলেও, এমনকি গ্রাফিক্স লাইব্রেরিগুলি (ওপেনজিএল, এসএফএমএল, এসডিএল,…) ব্যবহার করে কেন বিরক্ত করবেন যখন আপনার কেবলমাত্র কিছু বাফার বরাদ্দ করা হবে, একটি বিটম্যাপটি পাস করতে হবে এবং স্ক্রিনে আঁকতে হবে?

আপনি যদি তখন নিজের স্ক্রিনে স্বতন্ত্র জিনিস আঁকতে চান তবে কেবল সেগুলি আপনার বিটম্যাপে লিখুন যা বাফারে পরে যায়। আমি প্রোগ্রামিংয়ে বেশ নতুন, তবে এটি আমার কাছে বেশ সহজ বলে মনে হচ্ছে। আমি ভুল হলে আমাকে সংশোধন করুন।


11
পরে তার সিরিজে (প্রায় 220 পর্বের) তিনি ওপেনজিএল ব্যবহার করবেন। তিনি যে কারণটি করেন তা হল গতি।
র‌্যাচেট ফ্রিক

5
কৌশলটি স্ক্রিনে কী আঁকতে হবে তা নির্ধারণ করছে। জিপিইউ টেক্সচার / শেডিং স্টাফ, ত্রিভুজগুলি, ক্যামেরা প্রজেকশন ইত্যাদির প্রত্যেকটি প্রথমে প্রতিটি পিক্সেলটি কী রঙের হবে তা সিদ্ধান্ত নিতে হবে। পিক্সেল রঙগুলিকে স্ক্রিনে চাপানো সহজ অংশ।
ব্যবহারকারী 14146

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

এসএফএমএল রেন্ডারিংয়ের জন্য ওপেনজিএল ব্যবহার করে, তাই সত্যই সমস্ত এসএফএমএল ওপেনজিএল ব্যবহারের জন্য একটি সহজ ইন্টারফেস সরবরাহ করে।
কর্নস্টাল্ক

2
কেসি যা করছেন তা টেকনাইল এখনও গ্রাফিক্স লাইব্রেরি ব্যবহার করছেন। গ্রন্থাগারটিকে জিডিআই বলা হয় এবং এটি ওএসের মূল এপিআইর অংশ হলেও এটি এখনও প্রযুক্তিগতভাবে একটি গ্রাফিক্স গ্রন্থাগার।
ফারাপ

উত্তর:


41

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

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

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


12
ওপেনজিএল পয়েন্ট, লাইন এবং ত্রিভুজগুলির মতো পদগুলি জানে। বেশিরভাগ সময় আপনি ত্রিভুজ দিয়ে কাজ করবেন। ওপেনজিএল দিয়ে কীভাবে কাজ করবেন তা শিখতে আমি ওপেনজিএল- টিউটোরিয়াল.অর্গের সুপারিশ করতে পারিওপেনজিএল হুডের নীচে কী করে তা শিখতে অফিশিয়াল উইকিতে এক নজরে
tkausl

1
আমি +1 এ যাচ্ছিলাম তবে "চাকা পুনরুদ্ধার" সম্পর্কে আমি কিছুটা পছন্দ করি না কারণ আমার মনে হয় এটি কম্পিউটিংয়ের ইতিহাসের দিক থেকে ভুল ধারণা দেয়। বিটম্যাপ রেন্ডারিং প্রথমে এসেছিল, অতএব ওপেনজিএল হ'ল "চাকাটিকে পুনর্নির্মাণ"। তাদের অবশ্য করার দুটি ভাল কারণ ছিল: 1) মানককরণ এবং 2) জিপিইউ ত্বরণ। নতুন সংস্করণটির উন্নতি হলে হুইলটির পুনরায় উদ্ভাবন করা সবসময় খারাপ জিনিস হয় না (যেমন টায়ার বনাম কাঠের ওয়াগনের চাকাগুলি)। এখানে মূল কথাটি হওয়া উচিত নয় যে সফ্টওয়্যার রেন্ডারিং হুইলটি পুনরায় উদ্ভাবন করছে, এটি হওয়া উচিত এটি জিপিইউ রেন্ডারিংয়ের চেয়ে নিকৃষ্ট।
ফারাপ

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

1
এটি অর্ধেক উত্তর মাত্র। পরবর্তী উত্তরটি অন্য অর্ধেক, তবে একটি সম্পূর্ণ উত্তর (ওপেনজিএল এবং তিনি উল্লেখ করেছেন এমন অন্যান্য জিনিসের মধ্যে পার্থক্য সম্পর্কে কিছুটা ব্যাখ্যা সহ) এই প্রশ্নের যথাযথ উত্তর হবে।
জ্যাস্পার

1
@ user148013 "ওপেনগল কি বিন্দু, রেখা, ত্রিভুজগুলির মতো শব্দগুলি জানে?" আধুনিক ওপেনজিএল এই আদিমগুলির সাথে একচেটিয়াভাবে আচরণ করে। আপনি তাদের ব্যতীত আর কিছু জোর করতে পারবেন না।
ন্যাক্স 'vi-vim-nvim'

25

আমার প্রশ্ন হ'ল এমনকি ওপেন গ্লল, এসএফএমএল, এসডিএল এর মতো কিছু ব্যবহার করে কেন বিরক্ত করবেন যখন আপনাকে কেবল কিছু বাফার বরাদ্দ করতে হবে, একটি বিটম্যাপটি পাস করতে হবে এবং এটিকে স্ক্রিনে আঁকতে হবে?

সংক্ষিপ্ত: কারণ এটির দ্রুত (ওপেনজিএল, ডাইরেক্টএক্স)।

লং:

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

তবে এটি ধীর । সিপিইউ যা শেষ পর্যন্ত এই সমস্তগুলি কার্যকর করবে এই দৃশ্যের জন্য তৈরি করা হয়নি। জিপিইউগুলির জন্য যা তা রয়েছে ts ওপেনজিএল যা করে (এটি অবশ্যই কোনও সফ্টওয়্যার-বাস্তবায়ন না হওয়া পর্যন্ত) আপনি যা করতে বলে তা সবই গ্রহণ করা এবং সমস্ত ডেটা, সমস্ত ড্র-কল, গ্রাফিক্স কার্ডে প্রায় সবকিছু এবং জিপিইউকে কাজটি করতে বলুন । GPU বিশেষত এই ধরণের কাজের জন্য তৈরি করা হয়। ভাসমান পয়েন্ট সংখ্যাগুলি গুণিত করে (আপনি যা খুব বেশি যখন একটি 3D-সিন অঙ্কন) এবং শেডার নির্বাহ। এবং এটি সমান্তরালে। জিপিইউ কত গতিময় তা অনুধাবন করতে আপনি 1920x1080 পিক্সেল সহ ফুলস্ক্রিনে 3 ডি-তে একটি সাধারণ দৃশ্যের কথা চিন্তা করুন। এগুলি আঁকতে 2,073,600 পিক্সেলকে গুণিত করা হয়। জন্য প্রতিটি পিক্সেল করেন তা জিপিইউ কমপক্ষে একবারে ফ্রেগমেন্ট-শেডারটি চালাবে , বেশিরভাগ বার একাধিক বার Now এখন, আমরা ধরা যাক আমরা প্রতি সেকেন্ডে 60 ফ্রেমে চালাই। যার অর্থ, জিপিইউ খণ্ড-শেডারটি 2,073,600 * 60 = 124,416,000 বার প্রতি সেকেন্ডে চালায় । আপনি কি মনে করেন আপনি নিজের সিপিইউতে এমন কিছু করতে পারেন? (এটি একটি সহজ সরল ব্যাখ্যা, আরও কতগুলি বিষয় বিবেচনার জন্য রয়েছে যে আপনি আরও নিকটবর্তী বস্তুগুলি দ্বারা কত পিক্সেলকে ওভারড্র করেন, এমএসএএ আপনি কতটা ব্যবহার করেন এবং এইভাবে, তবে প্রতি সেকেন্ডে 124,416,000 বার সম্ভবত আপনি সবচেয়ে কম পেতে পারেন এবং আপনি একটি সাধারণ দৃশ্যের সাহায্যে সহজেই 60fps এর চেয়ে অনেক বেশি কিছু থাকবে)

ওপেনজিএল এবং ডাইরেক্ট 3 ডি কী করে তা ইঞ্জিনের জন্য @ ইউরি পপোভগুলি কী জবাব দেখে তা বোঝায়।


8
তিনি একটি 2 ডি গেম তৈরি করছেন, থ্রিডি হিসাবে অন্য একটি বিষয় তৈরি করেছেন। এবং যখন আমি ধীর বলি এটির অগত্যা এটির অর্থ এটি হবেনা যে এর চেয়ে কম 60 fps রয়েছে তবে এর অর্থ সিপিইউর প্রয়োজনীয় সময়ের একটি অংশে গ্রাফিক্স-কার্ড একই কাজ করবে, এটি কমপক্ষে 3 ডি স্পেসের ক্ষেত্রে আসে।
tkausl

4
তবে জিপিইউগুলি এতে আরও ভাল হওয়ার কারণ এটি শেডারের অনুরোধগুলিকে সমান্তরালভাবে সেট আপ করা হয়েছে।
র‌্যাচেট ফ্রিক

4
@ user148013 আমি এই লোকটির কাছ থেকে যা দেখেছি তা থেকে আমি বলতে পারি যে সে "খুব জ্ঞানী" এর বিপরীত।
বারটেক বানাচেউইচজ

4
এটি কেবল রেন্ডার করা ধীর নয় (ক্যাসির সফটওয়্যার রেন্ডারারটি আশ্চর্যজনকভাবে দ্রুত হয়েছিল)। এটি সাধারণ র‍্যাম থেকে ভিডিও র‌্যামে চাপ দেওয়াও অনেক বেশি ডেটা। বাসের ধরণের উপর নির্ভর করে ভিডিও কার্ডে একটি বিশাল বিটম্যাপ চাপানো ফ্রেম সময়ের একটি উল্লেখযোগ্য অংশ নিতে পারে। জিপিইউ ব্যবহার করে আপনি মাঝে মাঝে টেক্সচার টানুন এবং ফ্রেমের পরে ফ্রেমের জন্য এগুলি ব্যবহার করেন।
অ্যাড্রিয়ান ম্যাকার্থি

2
@ user148013 চটকদার এবং ভাল প্রোগ্রামিংয়ের মধ্যে পার্থক্য রয়েছে। তারা ওভারল্যাপ করতে পারে তবে প্রায়শই তারা দ্বন্দ্বের মধ্যে থাকে। আমি রাখা চাই অধীনে "আমি সফ্টওয়্যার [শুধু MESA যা করতে পারেন ... মত] এ রেন্ডার করতে পারেন" চটকদার এবং সবচেয়ে অবশ্যই না ভাল

11

তিনি যা করেন তাকে বলা হয় সফটওয়্যার রেন্ডারিং , ওপেনজিএল যা বলে তাকে জিপিইউ রেন্ডারিং বলে

তাদের মধ্যে পার্থক্য কী? গতি এবং স্মৃতি।

রাস্টারাইজেশন (স্ক্রিনে ত্রিভুজগুলি পূরণ করা) কিছুটা সময় নেয়। আপনি যদি এটি সিপিইউতে করেন, আপনি মূলত সেই সময়টিকে গেম যুক্তি থেকে দূরে সরিয়ে রাখবেন, বিশেষত যদি এটি ভালভাবে অনুকূলিত না হয়।

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


ওএস এক্স-এও কি সফটওয়্যার রেন্ডারিং সম্ভব? কারণ দেখে মনে হচ্ছে গ্রাফিক্সের সাথে যা কিছু করার আছে তা ওপেনগল এখন মেটাল দ্বারা করা হয়েছিল।
ব্যবহারকারী 148013

2
@ user148013 আপনার কিছু ভুল ধারণা রয়েছে। ওপেনজিএল একটি মাল্টিপ্লাটফর্ম এপিআই, সুতরাং এটি ওএস এক্সে চলতে পারে , বাস্তবে এটি "আধুনিক" (2000-এর পরে) জিপিইউ দিয়ে সমস্ত কিছুতে চলতে পারে। ধাতবটি কেবল অ্যাপল ডিভাইসের জন্য পৃথক এপিআই। সফ্টওয়্যার রেন্ডারিং করা উভয় থেকে পৃথক জিনিস এবং হ্যাঁ, এটি ওএস এক্সেও করা যেতে পারে। এটি মূলত সিপিইউ দিয়ে পর্দায় ম্যানুয়ালি পিক্সেল সেট করছে setting
বিলিন্ট

ঠিক কেন আমি জিজ্ঞাসা করেছি কারণ আমি যতদূর জানি ওএস এক্সে সফ্টওয়্যার রেন্ডারিং করা যায় না Coc তারা এখন মেটালটিকে তার পথ হিসাবে দ্রুত ব্যবহার করে। তবে আমি এমন একটিও ফাংশন পাইনি যা জিপিইউ (ওপেনগেল, ধাতু) ব্যবহার না করে পর্দায় একটি বাফার আঁকবে।
ব্যবহারকারী 148013

1
@ user148013 কারণ এটি কোনও ওএসের জন্য নির্দিষ্ট নয়, না বাস্তবায়নও। ধরা যাক আপনি এটি জাভাতে প্রয়োগ করতে চান, কারণ এটি মাল্টি-প্ল্যাটফর্ম বিকাশের জন্য একটি বিখ্যাত পছন্দ choice জাভা দিয়ে, আপনি প্রথমে এটি একটি উইন্ডো (জেফ্রেমে) তৈরি করে করতে পারেন, তারপরে এটির উপর সরাসরি অঙ্কনের পরিবর্তে আপনি একটি চিত্র আঁকুন, তারপরে আপনি এই চিত্রটি ফ্রেমে রেখে দিন। এটি তবে "ত্রিভুজ" বা "লাইন" পদটি জানতে পারবে না। শুধু রং। আপনাকে নিজেরাই এটিকে প্রয়োগ করতে হবে একটি রাস্টেরাইজেশন অ্যালগরিদম দিয়ে। এ কারণেই আমরা ওপেনজিএল পছন্দ করি, এটি দ্রুত এবং ব্যবহার করা সহজ a এটি মূলত একটি রাস্টেরাইজেশন এপিআই।
বিলিন্ট

2
@ user148013 কেন তারা পারেন নি? যদি তারা কোনও উইন্ডো খুলতে পারে এবং তারা এআইপিআই ছাড়াই এটিতে 1 টি চিত্র আঁকতে পারে তবে তারা পারবে।
বিলিন্ট

8

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

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

আপনি কী "গ্রহণযোগ্য" এর রেখাটি অঙ্কন করছেন বা সরঞ্জামচেইনের একটি স্বেচ্ছাসেবী বিন্দুতে নয়। আপনি কেবল সহজেই বলতে পারেন যে "আপনি যখন সমাবেশে একই জিনিস করতে পারতেন তখন কেন সি ++ ব্যবহার করবেন?", বা "আপনি যখন কেন খুব সহজেই তার তারের উপর থেকে ভোল্টেজগুলি পড়তে এবং নিজেই এটি গণনা করতে পারেন তখন কীবোর্ড ড্রাইভারগুলির উপর নির্ভর করবেন?" প্রতিদিনের মতো পর্যাপ্ত সময় বা প্রত্যেকের নিজের জীবন যাপনের জন্য আজীবন কয়েক বছর নেই।

এটি কেবল সফ্টওয়্যার বিকাশের ক্ষেত্রেই প্রয়োগ হয় না, তবে সাধারণভাবে আধুনিক জীবনেও প্রযোজ্য। আপনি কি কখনও সেই ছেলেটির কথা শুনেছেন যে সে নিজেই টোস্টার তৈরি করেছিল, সে প্রথম থেকেই?http://www.thomasthwaites.com/the-toaster-project/ । এটি সত্যই দীর্ঘ সময় এবং পুরো প্রচুর প্রচেষ্টা নিয়েছে। একটি টোস্টার জন্য। আপনার নিজের থেকে ইথারের বাইরে কোনও ভিডিও গেম বাস্তবায়নের জন্য প্রয়োজনীয় সমস্ত কিছু তৈরি করার চেষ্টা করুন !


2
আমি মনে করি এটি একটি ভাল উত্তর কারণ এটি উল্লেখ করে যে শিক্ষাগত উদ্দেশ্যে চাকা পুনরায় উদ্ভাবন করার ধারণাটি বেল্টটিং না করে ফ্রেমওয়ার্কগুলি কেন ভাল।
ফারাপ

3

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


3

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

সফটওয়্যার রেন্ডারিংয়ের সাথে, সিপিইউ ব্যবহার করে, রেন্ডারার এক এক করে বিটম্যাপের সমস্ত পিক্সেলের উপরে লুপিং করবে এবং প্রতিটি স্ক্রিনে প্রদর্শন করার আদেশ জারি করবে। সুতরাং আপনি যদি 1000x1000 আকারের চিত্রটি উপস্থাপন করছেন তবে আপনার সিপিইউতে 1000,000 লুপ হবে। এগুলি সর্বোপরি নিয়ন্ত্রণে রেখে ডিজাইন করা হয়েছে; অনেকগুলি শর্ত, নির্দেশাবলীর এক সেট থেকে অন্যটিতে যেতে এবং নিয়ন্ত্রণের প্রবাহের কঠোর দিকনির্দেশ direction তবে, একটি জিপিইউ এমন জ্ঞান দিয়ে তৈরি করা হয়েছে যা এটি করবে স্ক্রিনে পিক্সেলগুলির উপরে অনেকগুলি অনুরূপ লুপিং করবে।একটি জিপিইউ 1000000 পুনরাবৃত্তির সাথে লুপ নেবে এবং প্রতিটি কাজের জন্য সমান্তরালভাবে ** এবং একে অপরের থেকে স্বতন্ত্র ** করার জন্য তার বিশাল সংখ্যক কোরের উপর কাজটি ভাগ করে দেবে। সুতরাং সিপিইউ এর বিপরীতে, প্রতিটি সময়ই জিপিইউ যদি অন্য কোনও শর্ত জুড়ে আসে, এটি উভয় কোড শাখাটিকে নিজের দুটি কোরকে পরিচালনা করবে এবং তারপরে, এটি শর্তটি কীভাবে মূল্যায়ন করে এবং তা বাতিল করে দেবে তা দেখবে অনিবন্ধিত শাখার ফলাফল (যে কারণে জিপিইউ শেডারে প্রচুর পরিমাণে শর্তাবলী ভ্রূণুভূত হয়; তারা সর্বদা একটি নষ্টের জন্য দায়ী)।

হ্যাঁ, জিপিইউগুলি সমান্তরালতার চারপাশে নির্মিত । এটি সিপিইউগুলির তুলনায় তাদের জন্য পিক্সেলগুলিতে আরও দ্রুত কাজ করে।


0

দেখুন আমাকে কী গ্রাফিক্স এপিআই ব্যবহার করার দরকার আছে?

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

তবে নন-পিসি হার্ডওয়্যার, ডেডিকেটেড গেমস মেশিনগুলিতে প্রসেসরের কাছ থেকে কাজ অফলোড করে গ্রাফিক্সকে দ্রুততর করার জন্য সবসময় কৌশল রয়েছে। এমনকি আটারি 2600 এর "হার্ডওয়্যার স্প্রাইটস" ছিল, আংশিক কারণ এটিতে ফ্রেমবফারের জন্য পর্যাপ্ত র্যাম নেই।

পরে (80 এর দশকের মাঝামাঝি) গেমস কনসোলগুলি প্ল্যাটফর্ম গেমগুলির জন্য অনুকূলিত করা হয়েছিল। আবার কোনও ফ্রেমবফার নেই; পরিবর্তে প্রোগ্রামার টাইলস এর গ্রিড নির্দিষ্ট করতে পারে :

জেনেসিস গ্রাফিক্স হার্ডওয়্যারটিতে 2 টি স্ক্রোলযোগ্য প্লেন রয়েছে। প্রতিটি প্লেন টাইলস দিয়ে গঠিত। প্রতিটি টাইল একটি 8x8 পিক্সেল বর্গক্ষেত্র প্রতি পিক্সেল 4 বিট। প্রতিটি পিক্সেল এইভাবে 16 রঙ থাকতে পারে। প্রতিটি টাইল 4 টির মধ্যে 1 টি রঙিন টেবিল ব্যবহার করতে পারে, তাই স্ক্রিনে আপনি একবারে 64 টি রঙ পেতে পারেন তবে কোনও নির্দিষ্ট টাইলের মধ্যে কেবল 16 টি পেতে পারেন। টাইলস 32 বাইট প্রয়োজন। গ্রাফিক্স মেমরির 64K রয়েছে। মেমরিটি অন্য কোনও কিছুর জন্য ব্যবহার না করা হলে এটি 2048 টি স্বতন্ত্র টাইলসের অনুমতি দেবে।


-2

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

ওপেনজিএল আপনাকে 512x512 টেক্সচারের মধ্যে (পিএসএক্সের মতো পুরানো কনসোলগুলির একটি নিদর্শন), ভিডিও মেমোরি পৃষ্ঠায় গ্রাফিক্স প্যাকিংয়ের জন্য) আপনার সমস্ত স্প্রাইট প্যাক করতে বাধ্য করবে, যাতে আপনাকে জটিল স্প্রাইট প্যাকিং কোডটি লেখার প্রয়োজন হয়।

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

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