2013-02-06 54 views
7

मैं शेडरक्या यह कोड में ग्लिसल वर्दी स्थान कैशिंग के लायक है?

myProgram.uniform3fv("uniformVector", 0.0f, 0.1f, 1.0f); 

में उनके वास्तविक नाम के माध्यम से वर्दी निर्धारित करने की क्षमता है करने के लिए चाहते हैं मैं एक मानचित्र के कुछ फार्म में कैश स्थानों करना है?

std::map<std::string, unsigned int> // or unordered_map 

या शायद ओपनजीएल (डेस्कटॉप पर) कैश इसे किसी भी तरह से कैश करता है, तो मुझे कोई प्रदर्शन अंतर नहीं होगा?

उत्तर

6

ओपनजीएल विनिर्देश कार्यक्षमता को परिभाषित करता है, प्रदर्शन नहीं। तो यह जानने का कोई तरीका नहीं है कि कोई भी विशेष ओपनजीएल कार्यान्वयन सक्रिय वर्दी की सूची को स्टोर करेगा या कितनी तेजी से std::map प्रदर्शन के सापेक्ष होगा।

तो वास्तव में, यह आपके ऊपर है। यदि आप लगातार चाहते हैं, प्रदर्शन ज्ञात है, तो इसे स्वयं करें। यदि आप ओपनजीएल कार्यान्वयन की अनियमितताओं पर मौका लेना चाहते हैं, तो जब चाहें इसे पूछें। निजी तौर पर, मैं खाई के नाम कहूंगा और स्थानों के साथ जाऊंगा। इस तरह आप अधिकतम प्रदर्शन प्राप्त करते हैं।

+0

इसलिए ज्यादातर मामलों में, हम धारणाओं (ड्राइवर कार्यान्वयन के बारे में) पर भरोसा नहीं कर सकते हैं और यह हमारे लिए इस तरह के सरल कैशिंग करना बेहतर है। – fen