2012-10-12 17 views
6

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

हालांकि, जैसे ही मुझे इस कस्टम समारोह बनाया, शेडर त्रुटि फेंक शुरू होता है:

ERROR: 0:33: 'grid' : no matching overloaded function found 

कौन सा अजीब है, क्योंकि यह समारोह के रूप में यह संकलन प्रतीत होता है। अगर मैं grid() से return को दूर मैं यह त्रुटि भी मिलती है:

ERROR: 0:36: '' : function does not return a value: grid 

तो क्या मैं कार्यों की घोषणा के बारे में यहाँ याद आ रही है?

पूर्ण यहाँ शेडर:

uniform float brightness; 
uniform float shiftX; 
uniform float shiftY; 

uniform vec4 color; 
varying vec3 vPos; 

void main() { 
    gl_FragColor = vec4(grid(200.0), 0.0, 0.0, 1.0); 
} 

float grid(float size) { 
    float x = pow(abs(0.5 - mod(vPos.x + shiftX, 200.0)/200.0), 4.0); 
    float y = pow(abs(0.5 - mod(vPos.y + shiftY, 200.0)/200.0), 4.0); 
    return (x+y) * 5.0 * pow(brightness, 2.0); 
} 

उत्तर

16

आप या तो मुख्य से पहले ग्रिड समारोह रख सकते हैं या आगे के रूप में आप ग में होगा यह घोषणा करने के लिए किया है।

जैसे:

float grid(float size); 
मुख्य विधि से पहले

+0

वाह। शर्मिंदा मैं कोशिश करने के बारे में नहीं सोचा था। धन्यवाद। –

+0

आपका स्वागत है। – rgngl

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