भंडारण क्वालिफायर inऔर outवास्तव में एक उद्देश्य है कि शामिल है और अधिलंघित की है varyingऔर attribute। वे क्या परिभाषित चर क्रमशः में कहते हैं और बाहर शेडर के लिए कहते हैं। देखें GLSL 4.2 संदर्भ कार्ड पेज 7:
in: पिछले चरण से shader में लिंकेज
out: अगले चरण के लिए एक shader से लिंकेज
attribute: inवर्टेकर शेडर के लिए भी
varying: outवर्टेक्स शेडर के लिए भी, inटुकड़े टुकड़े करने वाले के लिए समान (ध्यान दें: ये गलत तरीके से उपर्युक्त संदर्भ कार्ड में चारों ओर फ़्लिप किए गए हैं।)
साइड नोट के साथ कि बाद के दोनों पदावनत क्रमबद्ध हैं: वे 4.2 कोर प्रोफाइल में मौजूद नहीं हैं, केवल संगतता प्रोफाइल में।
वास्तव में वे क्या करते हैं?
उपयोग के लिए, एक ओपनरो से आधुनिक ओपनजीएल से वर्टेकर शेडर लें । अध्याय 2.2: शेडर्स :
#version 110
attribute vec2 position;
varying vec2 texcoord;
void main()
{
gl_Position = vec4(position, 0.0, 1.0);
texcoord = position * vec2(0.5) + vec2(0.5);
}
इसे 4.2 कोर में फिर से लिखा जाना चाहिए:
#version 420
in vec2 position;
out vec2 texcoord;
void main()
{
gl_Position = vec4(position, 0.0, 1.0);
texcoord = position * vec2(0.5) + vec2(0.5);
}
अनछुए ट्यूटोरियल
मैं आपको "पुराना" ट्यूटोरियल कोड खोजने का मुख्य कारण अनुमान लगा रहा हूं, यह है कि सभी के पास GLSL 3.3+ संगत हार्डवेयर तक पहुंच नहीं है। भले ही, एक अच्छे और अधिक तारीख के ट्यूटोरियल के लिए मैं ख़ुशी से आपको निकोल बोलस के लर्निंग मॉडर्न 3 डी ग्राफिक्स ग्राफिक्स की दिशा में इंगित करूंगा ।