2012-06-07 17 views
5

मुझे segfaults मिल रहा है और क्यों नहीं पता लगा सकता है। जिस व्यक्ति को मैं संकलित करता हूं और एक ओएसएक्स मशीन पर सही ढंग से चलता है। gdb पश्व-अनुरेखन मुझे देता है कि यह कोड के इस हिस्से से आ रहा है, विशेष रूप से, glGenFramebuffers से:glgenFramebuffers में सेगफॉल्ट

// Render the warped texture mapped triangles to framebuffer 
GLuint myFBO; 
GLuint myTexture; 

glEnable(GL_TEXTURE_2D); 
glGenTextures(1, &myTexture); 
glBindTexture(GL_TEXTURE_2D, myTexture); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, size.width, size.height, 0, GL_RGB, GL_UNSIGNED_BYTE, 0); 
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); 

glGenFramebuffers(1, &myFBO); 
glBindFramebuffer(GL_FRAMEBUFFER_EXT, myFBO); 

मैं Nvidia से नवीनतम मालिकाना ड्राइवरों ओएस द्वारा प्रदान का उपयोग कर एक Nvidia कार्ड के साथ 12.04 Ubuntu चल रहा हूँ। मैं ओपनजीएल के साथ अविश्वसनीय रूप से परिचित नहीं हूं, यह कोड मेरे साथी का है, और वह भी स्टंप हो रहा है। अगर आपको किसी और जानकारी की ज़रूरत है, तो मुझे इसे प्रदान करने में खुशी होगी।

+2

क्या आपने पहले से ही अपने कोड में 'glGetError()' को कॉल करके त्रुटियों के लिए जांच की है? शायद इसका उत्पादन आपकी मदद कर सकता है। – Gnosophilon

+2

क्या glGenFramebuffers सूचक या फ़ंक्शन है? यदि सूचक - क्या यह मान्य है (न्यूल नहीं)? जब आप इस कोड को निष्पादित करते हैं तो ओपनजीएल संदर्भ बनाया जाता है? –

उत्तर

3

उत्तर वास्तव में वास्तव में सरल साबित हुआ। ओएसएक्स कोडर्स को glew कॉल का उपयोग शुरू करने से पहले glewInit() को कॉल करने की आवश्यकता नहीं है - लिनक्स और विंडोज उपयोगकर्ता करते हैं। इसके अलावा, मुझे पता चला कि दिलचस्प जानकारी का एक और बिट: जांचें कि क्या आप glxinfo का उपयोग करके प्रत्यक्ष प्रतिपादन करने में सक्षम हैं। OpenGL प्रोग्राम चलाते समय यह सभी अंतर कर सकता है।