2011-12-26 20 views
20

डिफ़ॉल्ट वर्टेक्स, खंड और ज्यामिति जीएलएसएल शेडर्स संस्करण # 330 के लिए क्या दिखते हैं?डिफ़ॉल्ट जीएलएसएल शेडर्स कैसा दिखता है? संस्करण 330

मैं #version 330 जीएलएसएल संस्करण 3.30 एनवीआईडीआईए सीजी कंपाइलर के माध्यम से उपयोग करूँगा, क्योंकि मेरा ग्राफिक्स कार्ड इसका समर्थन करता है।

डिफ़ॉल्ट शेडर्स के साथ, मेरा मतलब है कि शेडर्स प्रोग्राम बंद होने पर ग्राफिक्स कार्ड की तरह ही सटीक चीजें करते हैं।

मुझे #version 330 के लिए एक अच्छा उदाहरण नहीं मिल रहा है। पूरे दिन googling किया गया। सुनिश्चित नहीं है कि शब्द डिफ़ॉल्ट शेडर को तुच्छ या मूल जैसी कुछ और कहा जाता है और यदि ऐसा है तो मुझे यह नहीं मिल रहा है।

संस्करण 330 के साथ एक पुस्तक के लिए कोई सिफारिश या संस्करण 330 के साथ एक आसान शुरुआत ट्यूटोरियल से लिंक भी महान होगा।

#version 110 में एक छोटी सी शिखर शेडर का उदाहरण, डिफ़ॉल्ट शिखर परिवर्तन #version 110 में एक छोटी सी टुकड़ा शेडर का

#version 110 

void main() 
{ 
    gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex; 
} 

उदाहरण है, लाल

#version 110 

void main() 
{ 
    gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); 
} 
+0

सबसे तकनीकी अर्थ में, आप कोर जीएल 3.3 में शेडर को बंद नहीं कर सकते हैं, क्योंकि [कोर ओपनजीएल संदर्भ] [http://www.opengl.org/wiki/Core_And_Compatibility_in_Contexts) में शेडर्स के बिना प्रस्तुत करने की क्षमता हटा दी गई है। । ओपनजीएल विकी एक [शेडर-आधारित ट्यूटोरियल की सूची] रखता है (http://www.opengl.org/wiki/Getting_started#Tutorials_and_How_To_Guides) (जिनमें से एक मेरा है), लेकिन उनमें से कोई भी शेडर्स नहीं है जो सीधे तय किए गए मानचित्र पर नक्शा रखता है कार्यक्षमता क्या करेगी। वैसे भी शायद शेडर-आधारित प्रोग्रामिंग सीखने के लिए * सबसे खराब * तरीका है। –

उत्तर

31

वहाँ में रंग बदल जाता है OpenGL के साथ कोई "डिफ़ॉल्ट" शेडर्स नहीं हैं। यह क्या आप एक शेडर कि कोने अंतरिक्ष क्लिप को बदल देती है और उन्हें एक रंग देता है की एक बहुत ही सरल उदाहरण चाहते हैं की तरह लग रहा है, तो ये रहा:

वर्टेक्स शेडर:

#version 330 

layout(location = 0)in vec4 vert; 

uniform mat4 projection; 
uniform mat4 view; 
uniform mat4 model; 

void main() 
{ 
    gl_Position = projection * view * model * vert; 
} 

टुकड़ा शेडर:

#version 330 

out vec4 fragColor; 

void main() 
{ 
    fragColor = vec4(1.0, 0.0, 0.0, 1.0); 
} 

कोर ओपनजीएल 3.3 प्रोफाइल मैट्रिक्स स्टैक जैसी कई पुरानी फिक्स्ड-फ़ंक्शन चीजों के लिए समर्थन छोड़ देता है। आपको अपने स्वयं के मैट्रिक्स को संभालने और उन्हें अपने शेडर्स को भेजने की उम्मीद है। कोई ftransform नहीं है, और gl_Position बहुत ही वैध gl_ * चर है।

जबकि glbindAttribLocation को बहिष्कृत नहीं किया गया है, वर्टेक्स विशेषताओं के स्थान को परिभाषित करने की पसंदीदा विधि जीएलएसएल में "लेआउट (स्थान = एक्स)" के माध्यम से है।

कशेरुक शेडर में, "विशेषता" अब "इन" और "भिन्न" अब "बाहर" है। खंड के शेडर में, "भिन्न" अब "इन" और "gl_FragColor" को "आउट" चर द्वारा परिभाषित किया गया है। मेरा मानना ​​है कि gl_FragColor अभी भी मान्य है, लेकिन अब रंग को परिभाषित करने के लिए एक बाहरी चर का उपयोग करना संभव है।

This tutorial बहुत अच्छा है और कोर ओपनजीएल और जीएलएसएल 3.30 सिखाता है, मैं आपको जीएलएसएल के बारे में अधिक जानने में मदद के लिए इसका उपयोग करने की सलाह दूंगा। यह भी याद रखें कि GLSL Reference Pages आपका मित्र है।

+4

धन्यवाद मैंने पुस्तक "ओपनजीएल 4" में भी देखा।0 छायांकन भाषा कुकबुक "और वहां समान रंग त्रिकोण उदाहरण था जो मेरे लिए सब कुछ स्पष्ट करता था। मैं इतनी उलझन में था कि सभी बुनियादी/छोटी चीजों को हटा दिया गया था, ऐसा लगा कि किसी ने मेरे नीचे गाड़ी डाली। – ColacX

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