প্রতিটি glDraw * একটি ড্র কল।
1 glDrawArrays 1 ড্র কল draw
1 glDrawE উপাদান 1 টি কল কল।
এটি কোনও বিষয় নয় (যতক্ষণ না ড্র কলের গণনার সাথে সম্পর্কিত) আপনি কতটি শীর্ষে বা সূচকগুলি ব্যবহার করেন, 1 টি গ্লাড্রু * 1 ড্র কল।
কোয়াড আঁকার সাধারণ কেস (আপনি যে জিএল সংস্করণটি ব্যবহার করেন তা কোয়াড সরিয়ে নিল না) বা ত্রিভুজগুলি তুলনা করার জন্য ভাল উদাহরণ নয়, কারণ কোয়াডের একটি তালিকা বা ত্রিভুজগুলির একটি তালিকা একক কল দিয়ে আঁকতে পারে, এবং glDrawArrays আরও কার্যকর প্রদর্শিত হবে কারণ এতে সূচকের অতিরিক্ত ওভারহেড নেই।
আসুন আমরা আরও কিছুটা জটিল কেস নিই, তবে এটি একটি আরও বাস্তব-বিশ্বের দৃশ্যের প্রতিনিধিত্বকারী। কল্পনা করুন যে আপনার একাধিক ত্রিভুজ স্ট্রিপ এবং অনুরাগীর সমন্বয়ে একটি মডেল রয়েছে:
glDrawArrays (GL_TRIANGLE_FAN, .....);
glDrawArrays (GL_TRIANGLE_STRIP, .....);
glDrawArrays (GL_TRIANGLE_STRIP, .....);
glDrawArrays (GL_TRIANGLE_FAN, .....);
glDrawArrays (GL_TRIANGLE_STRIP, .....);
glDrawArrays (GL_TRIANGLE_FAN, .....);
এই উদাহরণে, glDrawArrays ব্যবহার করে আপনাকে মডেলটির জন্য মোট 6 ড্র কল দেয়। যাইহোক, উভয় স্ট্রিপ এবং অনুরাগীই সহজেই সূচকযুক্ত ত্রিভুজগুলিতে রূপান্তর করতে পারে, তাই সূচকগুলি যুক্ত করুন এবং এটি হয়ে যায়:
glDrawElements (GL_TRIANGLES, .....);
পুরো মডেলের জন্য এটি একটি ড্র কল।
GlDrawArrays এর উপর glDrawE উপাদানগুলির সুবিধাগুলি কেবল মেমরি সংরক্ষণের চেয়ে বেশি, যা এটি পরিমাপের একটি সহজ উপায়। মেমরি সংরক্ষণের সম্ভাবনা রয়েছে যেখানে শীর্ষস্থানগুলি পুনরায় ব্যবহার করা যেতে পারে, কারণ একটি সূচক সাধারণত একটি ভার্টেক্সের চেয়ে ছোট হয় (তাই আপনার ভারসাম্যের উপর ভারসাম্য থাকলেও তারা আরও কম হবে) তবে অন্যান্য সুবিধার মধ্যে রয়েছে:
হ্রাস কল কল গণনা। প্রতিটি অঙ্কন কলটি বৈধকরণের অবস্থা, জিনিস সেট আপ করা ইত্যাদি থেকে কিছুটা ওভারহেড অন্তর্ভুক্ত করে এবং এই ওভারহেডের বেশিরভাগই সিপিইউয়ের দিকে ঘটে। ড্র কলগুলির সংখ্যা হ্রাস করে আমরা এই ওভারহেডের অনেকাংশ এড়াতে চাই।
ভার্টেক্স পুনঃব্যবহার। এটি কেবল মেমরি-সঞ্চয়ের চেয়ে অনেক বেশি। আপনার জিপিইউতে সম্ভবত একটি হার্ডওয়্যার ভার্টেক্স ক্যাশে রয়েছে, যেখানে সম্প্রতি রূপান্তরিত উল্লম্বগুলি সংরক্ষণ করা যেতে পারে; যদি একই ভার্টেক্স আবার ফিরে আসে এবং যদি এটি ক্যাশে থাকে তবে এটি আবার রূপান্তরিত করার পরিবর্তে ক্যাশে থেকে পুনরায় ব্যবহার করা যেতে পারে। আপনার হার্ডওয়্যার সূচকগুলি তুলনা করে ক্যাশেটি পরীক্ষা করবে, সুতরাং ওপেনগিএল পদে আপনি ক্যাশেটি ব্যবহার করার একমাত্র উপায় হ'ল glDrawE উপাদান ব্যবহার করুন।
সুতরাং আপনার নির্দিষ্ট প্রশ্নের উত্তর দিতে:
কিভাবে glDrawE উপাদান ড্র কল কল সংরক্ষণ করতে পারে ...? উদাহরণস্বরূপ আপনি ব্যবহার করেন, এটি হয় না। প্রত্যেকের একটি করে ড্র কল রয়েছে। আমি উপরে আলোচনা হিসাবে, এই উদাহরণ দুটি তুলনা করার জন্য খুব খারাপ একটি।
কীভাবে glDrawE উপাদান ব্যবহার করে স্থান বাঁচাবে ...? সূচকগুলি উল্লম্বের চেয়ে ছোট are একটি 16-বিট সূচক দুটি বাইট, একটি অবস্থান / রঙ / টেক্সকর্ড ভার্টেক্স 24 বাইট। Vert টি উল্লম্বটি 144 বাইট, 4 টি শীর্ষ এবং আরও 6 সূচকগুলি 108 বাইট।
2 ত্রিভুজ থেকে স্কোয়ার আঁকার ক্ষেত্রে ...? এক এবং এক. একটি glDraw * কলটি একটি ড্র কল, ব্যবহৃত পরিমাপের বা সূচকগুলির সংখ্যা এই পরিমাপের জন্য অপ্রাসঙ্গিক। তবে আমাকে অবশ্যই পুনরায় জোর দিতে হবে, এটি দুটি তুলনার জন্য খুব খারাপ উদাহরণ।
অবশেষে, এবং কেবল বিষয়গুলি কিছুটা জটিল করার জন্য, যখন ত্রিভুজগুলির সাথে glDrawE উপাদানগুলি ডেস্কটপ জিপিইউগুলির সর্বোত্তম পথ, মোবাইলে এটি খুব আলাদা হতে পারে। কিছু মোবাইল জিপিইউ জিএল_আরআইআরএলজি_আরসিপি'র সাথে গ্লোড্রআরাইগুলি পছন্দ করতে পারে (আপনি এই ক্ষেত্রে আদিমকে একত্রে অবনমিত ত্রিভুজগুলি যুক্ত করবেন), এবং আমি এমনকি আদিম পুনঃসূচনা বা মাল্টি-ড্রয়ের মতো আরও উন্নত বিষয়েও স্পর্শ করতে পারি নি।