2013-07-24 17 views
5

मैंने देखा है कि सभी WebGL नमूना कोड gl.useProgram() को कॉल करता है, और उसके बाद प्रति फ्रेम एक बार प्रोग्राम के लिए प्रत्येक वर्दी सेट करता है। बात यह है कि, वेबजीएल प्रोजेक्ट में आप जो दो सबसे महंगी चीजें कर सकते हैं वे जावास्क्रिप्ट की लाइनें हैं और जावास्क्रिप्ट से शेडर में सामान कॉपी करते हैं, और यहां सब लोग एक सेकेंड सेकेंड दोनों कर रहे हैं। साथ ही, मुझे पता है कि मेरी अधिकांश वर्दी, अपने स्वयं के कार्यक्रम में, फ्रेम से फ्रेम में नहीं बदलती हैं। (यह साथ ज्यादातर प्रकाश की स्थिति और इस तरह के, सामान है कि आप सकता है गड़बड़ है लेकिन आम तौर पर ऐसा नहीं।)मुझे अपनी वर्दी को कितनी बार अपडेट करना होगा?

मेरा प्रश्न है, करता WebGL विनिर्देश कुछ भी कब तक वर्दी 'मूल्यों संरक्षित कर रहे हैं के बारे में क्या कहना है? अगर मैं gl.useProgram() को कॉल करता हूं, तो क्या प्रोग्राम मैंने अपनी वर्दी खोने का उपयोग बंद कर दिया है? यदि gl.useProgram() को कॉल करना वर्दी को स्कैम्बल करता है, तो क्या मैं इसे हर फ्रेम नहीं कह सकता, और मेरी वर्दी संरक्षित है?

अगर मैं केवल सभी उपयोगकर्ताओं को फ़ायरफ़ॉक्स 22.0 चलाने के लिए मजबूर कर सकता हूं, तो मैं कुछ टेस्ट कोड लिख और चला सकता हूं, और यह एक झिल्ली में पता चला है। अफसोस की बात है ...

उत्तर

2

एक वर्दी का मूल्य किसी विशेष कार्यक्रम से जुड़ा हुआ है। यह सिर्फ इसलिए नहीं चलेगा क्योंकि आपने दूसरे कार्यक्रम में स्विच किया था। (मैं एक कल्पना संदर्भ काम नहीं है।)

शायद कोड इन कारणों में से एक के लिए आप देख रहे हैं वर्दी हर फ्रेम स्थापित कर रही है:

  • सरल आलस्य: यह निश्चित काम करेंगे, अन्य चीजों को विचार की आवश्यकता होगी। अन्य मामलों में जहां वर्दी जरूरत करता से

  • प्रतिलिपि बनाई जा रही कोड हर फ्रेम सेट होनी चाहिए।

  • परिसर आलस्य: यह अक्सर वास्तव में परिस्थितियों के तहत एक पैरामीटर का सही मूल्य में बदल जाती है परिभाषित करने के लिए मुश्किल है, तो बस यह हर फ्रेम recompute। या, यह समझने के लिए कि क्या इसे बदलने की जरूरत है, यह भी अधिक कम्प्यूटेशनल रूप से महंगा हो सकता है!

इसके अलावा, प्रत्येक फ्रेम वर्दी करना बुरा नहीं है, क्योंकि केवल कुछ वर्दी हैं और वे अधिक डेटा नहीं हैं। वर्टेक्स सरणी या अन्य प्रति-दृश्य-ऑब्जेक्ट सामग्री की गणना या प्रतिलिपि ऐसी चीज है जिसकी आपको पहले चिंता करनी चाहिए।

संबंधित मुद्दे