के बारे में भ्रम तो मैं नारंगी पुस्तक (तीसरा संस्करण) के माध्यम से जा रहा था और मैं आविष्कार क्वालीफायर के बारे में अध्याय 9 में एक पारित हुआ। और यह कहते हैं:ओपनजीएल इनवेरिएंट क्वालीफायर
अपरिवर्तनीय क्वालीफायर संकलक निर्देश देता है और अभिव्यक्ति और कार्यों कि सीधे उत्पादन की गणना से संबंधित नहीं हैं की अनदेखी करने के लिए जोड़ा।
uniform mat4 MVPmatrix; // ... in vec4 MCVertex; // ... a(); // does not modify gl_Position, MVP or MCVertex // ... // Transform vertex to clip space gl_Position = MVP * MCVertex;
और
uniform mat4 MVPmatrix; // ... invariant gl_Position; in vec4 MCVertex; // ... a(); // does not modify gl_Position, MVP or MCVertex // ... // Transform vertex to clip space gl_Position = MVP * MCVertex;
किताब तो राज्य पर चला जाता है:
पहला मामला हो सकता है या
यह अंश कोड के दो समान के टुकड़े के बाद आता है परिवर्तित स्थिति को उसी तरह से गणना नहीं कर सकता है इससे कोई फर्क नहीं पड़ता कि असंबद्ध कार्य क्या है या अभिव्यक्ति शेडर से जुड़ा हुआ है। यह प्रतिपादन में समस्याएं पैदा कर सकता है यदि एक मल्टीपास एल्गोरिदम का उपयोग उसी ज्यामिति को एक से अधिक बार प्रस्तुत करने के लिए किया जाता है।
जो मुझे उलझन में डाल दिया है। यदि a()
किसी भी तरह से परिवर्तित स्थिति की गणना करने में शामिल चर को प्रभावित नहीं करता है, तो गणना कैसे भिन्न होगी? (और invariant
जोड़कर वास्तव में कैसे मदद करता है?)। और पहले उद्धरण का जिक्र करते हुए, "असंबद्ध कार्यों को अनदेखा करके" उनका क्या अर्थ है? क्या वे अभी निष्पादित नहीं हुए हैं?
मुझे नहीं लगता कि यह मूल दो प्रश्नों का उत्तर देता है। और उद्धरण ब्लॉक न तो – suitianshi
@ सुइटियानशी: ओपी invariant को समझना चाहता था, और नारंगी पुस्तक के बारे में क्या कहना था विच्छेदन करने के लिए चला गया। नारंगी पुस्तक सामग्री अनिवार्य रूप से गलत माना जा सकता है। इसलिए मैंने मूल स्रोत, जीएलएसएल स्पेक से जवाब देने के लिए चुना। मूल प्रश्न गलत बयान को समझने की कोशिश कर रहे हैं। आप क्या सही जवाब चाहते हैं? – Bahbar
मुझे एक पृष्ठ मिला जो बताता है कि हमें कभी-कभी "invariant" की आवश्यकता क्यों होगी। यह कहता है कि मल्टी-पास समस्या सीपीयू निर्देशों के पुनरावृत्ति के कारण हो सकती है (और कुछ और, क्षमा करें कि मुझे यह स्पष्ट नहीं है और सामग्री को फिर से नहीं मिल सकता है)। उदाहरण के लिए, यदि मैं एक ही शेडर प्रोग्राम के साथ दो बार त्रिकोण प्रदान करता हूं लेकिन दो पास के दौरान मुझे नींद आती है या खरीदारी होती है, तो परिणामी दो त्रिकोण ओवरलैप नहीं हो सकते हैं (बेशक, ऑफसेट वास्तव में छोटा हो सकता है)। असल में मैंने जीएलएसएल स्पेक पढ़ा है, लेकिन अभी भी उलझन में है। – suitianshi