भंडारण क्वालिफायर 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 डी ग्राफिक्स ग्राफिक्स की दिशा में इंगित करूंगा ।