2012-06-07 13 views
5

Ich bekomme Segfaults und kann nicht herausfinden, warum. Die Person, mit der ich arbeite, kompiliert und läuft korrekt auf einem OSX-Computer. GDB Backtrace gibt mir, dass es von diesem Abschnitt des Codes kommt, und zwar von glGenFramebuffers:Segfault in 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); 

Ich bin mit 12,04 Ubuntu mit einer Nvidia-Karte der neusten proprietären Treiber von Nvidia vom Betriebssystem bereitgestellt werden. Ich bin nicht sehr vertraut mit OpenGL, eine Menge von diesem Code ist mein Partner, und er scheint auch ratlos zu sein. Wenn Sie weitere Informationen benötigen, stelle ich Ihnen diese gerne zur Verfügung.

+2

Haben Sie bereits nach Fehlern gesucht, indem Sie 'glGetError()' irgendwo in Ihrem Code aufgerufen haben? Vielleicht könnte seine Ausgabe Ihnen helfen. – Gnosophilon

+2

Ist der Zeiger oder die Funktion glGenFramebuffers? Wenn Zeiger - ist es eine gültige (nicht NULL)? Wird der OpenGL-Kontext beim Ausführen dieses Codes erstellt? –

Antwort

3

Die Antwort erwies sich tatsächlich als sehr einfach. OSX-Codierer müssen glewInit() nicht aufrufen, bevor sie begonnen haben, glew-Aufrufe zu verwenden - Linux- und Windows-Benutzer tun dies. Und noch ein paar interessante Informationen, die ich herausgefunden habe: Überprüfen Sie, ob Sie direktes Rendern mit glxinfo durchführen können. Es kann den Unterschied ausmachen, wenn OpenGL-Programme ausgeführt werden.