मैं वर्तमान में सी में एक छोटे से परियोजना पर काम कर रहा हूँ ++ और ओपन और एक रंग चयन उपकरण है कि में फ़ोटोशॉप के समान लागू करने के लिए कोशिश कर रहा हूँ, जैसा कि नीचे।ओपन रंग प्रक्षेप
हालांकि मैं बड़े वर्ग के प्रक्षेप साथ परेशानी हो रही हूँ। एक 8800 GTS के साथ अपने डेस्कटॉप कंप्यूटर पर काम करते हुए परिणाम समान था लेकिन सम्मिश्रण के रूप में चिकनी नहीं था।
इस कोड मैं का उपयोग कर रहा है:
GLfloat swatch[] = { 0,0,0, 1,1,1, mR,mG,mB, 0,0,0 };
GLint swatchVert[] = { 400,700, 400,500, 600,500, 600,700 };
glVertexPointer(2, GL_INT, 0, swatchVert);
glColorPointer(3, GL_FLOAT, 0, swatch);
glDrawArrays(GL_QUADS, 0, 4);
के साथ इंटेल ग्राफिक्स HD 3000 अपने लैपटॉप पर चल कर, इस परिणाम कोड में कोई परिवर्तन नहीं और भी बदतर था।
मैंने सोचा कि यह ओपन दो त्रिकोण में ट्रैक्टर बंटवारे था, इसलिए मैं त्रिकोण के उपयोग से रेंडर और अपने आप को वर्ग के बीच में रंग interpolating की कोशिश की लेकिन यह अभी भी काफी परिणाम मैं के लिए उम्मीद से मेल नहीं करता है ।
एक ट्रैक्टर पर यह लागू करना अब पैदावार:
#ifdef GL_ES
precision highp float;
#endif
uniform vec2 resolution;
void main(void)
{
vec2 p = gl_FragCoord.xy/resolution.xy;
float gray = 1.0 - p.x;
float red = p.y;
gl_FragColor = vec4(red, gray*red, gray*red, 1.0);
}
यहाँ परिणाम है:
आपके उत्तर के लिए धन्यवाद, मैं के साथ बहुत कम अनुभव है जीएलएसएल हालांकि मुझे लगता है कि अगर आप एक शेडर का उपयोग करना चाहते हैं तो आपको पढ़ना याद रखना प्रतीत होता है क्योंकि आपको ओपनजीएल पाइपलाइन को पूरी तरह से बदलना है? क्या आपके द्वारा प्रदान किए गए शेडर का उपयोग करने का एक आसान तरीका है और केवल इसे glDrawArrays() के एक कॉल पर लागू कर रहा है? –
@ विल-ऑफ-फॉर्च्यून: जब तक आप OpenGL-2.1 के साथ चिपके रहते हैं और नीचे आप चुनिंदा शेडर्स का चयन कर सकते हैं। अर्थात। ज्यादातर चीजों के लिए निश्चित फ़ंक्शन पाइपलाइन का उपयोग करें, लेकिन केवल कुछ पर एक शेडर। केवल ओपनजीएल -3 कोर के साथ और बाद में * * शेडर्स का उपयोग करना चाहिए। लेकिन ईमानदारी से: शेडर्स का उपयोग जीवन को इतना आसान बनाता है, इसलिए मैं दृढ़ता से उनको हर जगह उपयोग करने का सुझाव देता हूं। – datenwolf
@ विल-ऑफ-फॉर्च्यून मैं आमतौर पर फ्रेमवर्क या ग्राफिक्स इंजन का उपयोग करता हूं जो शेडर्स को प्रबंधित करना आसान बनाता है। हालांकि, मैं आपको इसका उल्लेख करता हूं: http://nehe.gamedev.net/article/glsl_an_introduction/25007/ "जीएलएसएल एपीआई" अपने ओपनजीएल एप्लिकेशन में जीएलएसएल का उपयोग कैसे करें "अनुभाग पर जाएं। यह अनुभाग आपको दिखाएगा कि ग्लोस्ल शेडर्स को इन टिप्पणियों में से बेहतर तरीके से कैसे शामिल किया जाए। – num3ric