OpenGL में बफर ऑब्जेक्ट फ़ंक्शंस (glBufferData
, glBufferSubData
, और शायद कुछ अन्य लोगों के) एक पैरामीटर है usage
, इरादा उपयोग के एक संकेत के रूप में प्रलेखन वर्णन करते हैं, संभावना कार्यान्वयन उपज बेहतर प्रदर्शन करने में मदद करने के लिए होती।
प्रयोग
डेटा स्टोर के अपेक्षित उपयोग पैटर्न को निर्दिष्ट करता है। प्रतीकात्मक निरंतर होना चाहिए
GL_STREAM_DRAW
,GL_STREAM_READ
,GL_STREAM_COPY
,GL_STATIC_DRAW
,GL_STATIC_READ
,GL_STATIC_COPY
,GL_DYNAMIC_DRAW
,GL_DYNAMIC_READ
, याGL_DYNAMIC_COPY
।
[...]
उपयोग जीएल कार्यान्वयन के लिए एक संकेत है कि कैसे बफर ऑब्जेक्ट के डेटा स्टोर तक पहुंचा जाएगा। यह जीएल कार्यान्वयन को अधिक बुद्धिमान निर्णय लेने में सक्षम बनाता है जो बफर ऑब्जेक्ट प्रदर्शन को महत्वपूर्ण रूप से प्रभावित कर सकता है। हालांकि, यह डेटा स्टोर के वास्तविक उपयोग के लिए बाध्य नहीं करता है।
विकी इसी तरह अस्पष्ट है:
ये केवल संकेत हैं, आखिरकार। यह एक STATIC बफर को संशोधित करने के बाद, या STREAM बफर को कभी संशोधित नहीं करने के लिए पूरी तरह से कानूनी OpenGL कोड है।
[...]
ये ऐसे प्रश्न हैं जिनका उत्तर केवल सावधान रूपरेखा के साथ दिया जा सकता है। और फिर भी, उत्तर केवल उस विशेष हार्डवेयर विक्रेता से उस विशेष ड्राइवर संस्करण के लिए सटीक होगा।
ठीक है, यह पैरामीटर कितना प्रासंगिक है, यदि यह सब है? क्या ड्राइवर वास्तव में इसे ध्यान में रखते हैं, और यदि वे करते हैं, तो आपके अनुभव में यह व्यवहार में प्रदर्शन को कितना प्रभावित करता है? क्या आपके पास साझा करने के लिए डेटा है?
मैंने एक पतली ग्राफिक्स एपीआई एब्सट्रैक्शन लेयर लिखी है जिसका मतलब है कि मौजूदा एपीआई में से किसी के रूप में लागू किया जाना है, और यह इस पैरामीटर को पूरी तरह से अनदेखा करने और इसे उजागर एब्सट्रैक्शन से छिपाने के लिए आकर्षक है।