আমি কীভাবে জানব যে আমি গ্রাফিক্সের এপিআইগুলিকে খুব শক্তভাবে বিমূর্ত করছি?


23

একাধিক গ্রাফিক্স এপিআই সমর্থন করে এমন একটি রেন্ডারার তৈরি করার সময়, আপনি সাধারণত কিছু কোড নিম্ন স্তরের লাইব্রেরিতে আপনার কোড বিমূর্ত করতে চান যা ওপেনজিএল, ভুলকান, ডি 3 ডি 11 ইত্যাদির মতো কিছু গ্রাফিক্স এপিআইয়ের সাথে আবদ্ধ থাকে;

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

আমি কীভাবে জানতে পারি যে আমি খুব বেশি বিস্তৃত বিমূর্ততা তৈরি করছি?


5
আপনি কি 100% নিশ্চিত যে আপনার মোড়ক + ভলকান বা ডি 3 ডি 11 কেবল সর্বদা ওপেনজিএল ব্যবহারের চেয়ে দ্রুত?
মাকিং হাঁস

@ মুল হাঁস যদি সঠিকভাবে ব্যবহৃত হয় তবে হ্যাঁ।
গ্যাব্রিয়েল ভিয়েরটি

4
আমি গুরুত্ব সহকারে সন্দেহ হবে। ভুলকানের বেশিরভাগ লাভ খুব নিচু স্তরের হওয়া এবং খুব অদ্ভুত, নির্দিষ্ট উপায়ে কাজ করা থেকে আসে। ওপেনজিএল বা ডি 3 ডি-তে নির্বিঘ্নে একই কাজ করার পক্ষে যথেষ্ট জেনারেল কিছু সম্ভবত এটি করতে পারে না। ওপেনজিএল যেমন একই জিনিস পুনরায় বাস্তবায়ন করে (অনেকগুলি ভালকান টিউটোরিয়াল যেমন করে, তামাশা করে) এর ফলে 20 গুণ কাজ করে 99.99% একই কর্মক্ষমতা লাভ করে।
দামন

@ ড্যামন এটি ঠিক, তবে নতুন জিপিএসগুলি আধুনিক জিপিএসে কাজ করার জন্য বিশেষভাবে ডিজাইন করা হয়েছে (এবং ওপেনজিএলের মতো অভিযোজিত নয় ); ভুলকানের কথা বলতে গেলে, আপনি প্রতিটি সমর্থিত প্ল্যাটফর্মে একই পরিমাণে ওপেনজিএল থেকে বিপরীতভাবে একই API ব্যবহার করতে পারেন , যেখানে আপনাকে "এমবেডেড সিস্টেমস" সংস্করণ ব্যবহার করতে হবে। কম সিপিইউ ওভারহেড এবং অভিনব বৈশিষ্ট্যগুলি ছাড়া আমাদের কাছে খুব বেশি কিছু নেই তবে ভবিষ্যতে আমাদের কাছে চমকপ্রদ কিছু চমকপ্রদ কৌশল থাকতে পারে যা OGL বা D3D11 এর চেয়ে Vk বা D3D12 ব্যবহার করে দ্রুত চলতে পারে
গ্যাব্রিয়েল ভিয়ার্তি

উত্তর:


44

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

তবে ধরে নেওয়া যাক আপনি ইতিমধ্যে আপনার বিকল্পগুলি মূল্যায়ন করেছেন এবং এই সিদ্ধান্তে এসেছেন যে এটি নিজের নিজস্ব রোল করার পক্ষে উভয়ই কার্যকর এবং উপযুক্ত worth

তারপরে আপনার বিমূর্ত স্তরটির সফ্টওয়্যার আর্কিটেকচারের প্রধান বিচারক হলেন আপনার ফ্রন্ট-এন্ড প্রোগ্রামার।

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

যদি তা হয় তবে আপনি সফল হয়েছেন।


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

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

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

6

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

এপিআই এর মোড়কের অংশের বাইরে কোনও উচ্চ-স্তরের যুক্তি রাখার চেষ্টা করুন । আপনি যদি API এর এই অংশে একটি চতুর দৃশ্যের কুলিং কৌশল বাস্তবায়ন করেন তবে ভাল এখন আপনি সমস্ত ব্যাকএন্ড বাস্তবায়নের ক্ষেত্রে সেই যুক্তিকে নকল করতে পারেন। এটি অনেক অতিরিক্ত প্রচেষ্টা, তাই এটি সহজ রাখুন। দৃশ্য পরিচালনাকে এপিআই-র একটি উচ্চ-স্তরের অংশের অংশ হওয়া উচিত যা মোড়কের নিজের অংশ হওয়ার পরিবর্তে মোড়ক ব্যবহার করে।

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

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

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


3

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

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