2013-10-06 7 views
5

मैं एक OpenGL ES ड्राइवर त्रुटि हो रही है। इस बार मैं निम्नलिखित लाइनों को संकलित करने के कोशिश कर रहा हूँ:ओपन क्रैश कार्यक्रम को जोड़ने, एलजी नेक्सस 4

precision mediump float; 
varying highp vec2 textureCoordinate; 


void main() { 
highp vec4 color = texture2D(input0, textureCoordinate); 


vec3 color3 = color.rgb; 

vec2 tc = (2.0 * textureCoordinate) - 1.0; 
float d = dot(tc, tc); 
vec2 lookup = vec2(d, color3.r); 

.. 
.. 
} 

लेकिन मैं पंक्ति के बाद हो रही है:

GLES20.glLinkProgram(program); 

देशी दुर्घटना: "घातक संकेत 11 (SIGDEV) 0x00000060 (कोड पर = 1), थ्रेड 1231 " मुझे लगता है कि ऐसा होता है क्योंकि एलजी नेक्सस 4 जीपीयू एड्रेनो का उपयोग करता है, और यह भी कई मैक्रोज़ का उपयोग करके त्रुटि कोड 14 के साथ मेरे लिए क्रैश करता है।

+0

हम देख रहे हैं अपने शेडर कोड में कीड़े के लिए, आप _complete_ शेडर कोड शामिल होना चाहिए। इसमें सभी परिवर्तनीय घोषणाएं अनुपलब्ध हैं, और मुझे लगता है कि आप अंत में कुछ सामान छोड़ चुके हैं। इसके अलावा कुछ एप्लिकेशन कोड सहायक हो सकते हैं। –

+0

संभवतः आपका शेडर कोड संकलित नहीं हो रहा है, और इस प्रकार आपका प्रोग्राम लिंक करने में विफल रहता है। वैसे, ओपनजीएल ईएस में शेडर्स नहीं हैं, इसलिए ओपनजीएल ईएस टैग को यहां अप्रासंगिक करना अप्रासंगिक है। – eozgonul

+0

कृपया पूर्ण शेडर कोड प्रदान करें। – keaukraine

उत्तर

2

के बाद आप शेडर संकलन, glGetShaderiv का उपयोग कर शेडर संकलन का दर्जा मिलता है। जैसा: अंत में है कि से लौटे त्रुटि संदेश देखने के लिए

GLint infoLen = 0; 
glGetShaderiv(index, GL_INFO_LOG_LENGTH, &infoLen); 

if(infoLen > 1) 
{ 
    char* infoLog = new char(infoLen); 
    glGetShaderInfoLog(index, infoLen, NULL, infoLog); 
} 

चेक infoLog:

GLint compiled; 
glGetShaderiv(index, GL_COMPILE_STATUS, &compiled); //index is the shader value 

तो फिर, अगर संकलित शून्य के रूप में दिया जाता है, की जानकारी लंबाई पहले मिलता है, और उसके बाद के रूप में इस त्रुटि संदेश शेडर संकलन। आपकी मूल पोस्ट में सेगमेंटेशन गलती संदेश समस्या को हल करने के लिए कुछ भी उपयोगी नहीं है।

+1

मैं इस चेक को नहीं प्राप्त कर सकता क्योंकि मुझे प्रोग्राम को जोड़ने के दौरान यह मूल दुर्घटना हो रही है। मैंने – Nativ

+1

हालांकि कुछ अन्य लिंकिंग समस्याओं के लिए जानकारी का उपयोग नहीं किया था, हालांकि प्रोग्राम को जोड़ने से पहले आपको अपने शेडर्स को संकलित करना चाहिए ताकि आपको जानकारी प्राप्त करने में सक्षम होना चाहिए। आप बस एंड्रॉइड लॉग पर जानकारी प्रिंट कर सकते हैं। – eozgonul

1

जहाँ तक मेरा अपने टुकड़ा शेडर में अपनी शॉर्ट कोड अंश से देख सकते हैं आप निर्दिष्ट नहीं किया है float परिशुद्धता। ईएस 2.0 में आपको स्पष्ट रूप से float परिशुद्धता निर्दिष्ट करना होगा।

precision mediump float; 

कृपया इस in specs, पी के बारे में पढ़ा। 4.5.3 डिफ़ॉल्ट प्रेसिजन क्वालीफायर। शेडर कुछ ओपनजीएल ईएस ड्राइवरों पर float परिशुद्धता निर्दिष्ट किए बिना काम कर सकता है और किसी अन्य पर संकलन करने में असफल हो सकता है।

हालांकि, पूर्ण स्रोत कोड आपकी समस्या का सही कारण पता लगाने के लिए की जरूरत है।

मैं शेडर कोड के कुछ हिस्सों बाहर टिप्पणी जब तक इसे सही ढंग से संकलन शुरू होता है शुरू करने के लिए आप सुझाव देना चाहेंगे। इस तरह आप एक समस्याग्रस्त रेखा को संकुचित कर देंगे (मुझे एसओ पर उत्तर देने की प्रतीक्षा करने से भी तेज़ विश्वास है)।

+1

हाय, मैंने उपरोक्त परिशुद्धता रेखाएं जोड़ दीं। यह समस्या नहीं थी – Nativ

+0

शांत रहें और जब तक आपको कारण न मिल जाए तब तक रेखा से लाइन पर टिप्पणी करें। – keaukraine

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