2012-06-07 2 views
5

Je reçois des erreurs de segmentation et je n'arrive pas à comprendre pourquoi. La personne avec qui je travaille compile et fonctionne correctement sur une machine OSX. gdb backtrace me donne qu'il vient de cette section de code, en particulier, de glGenFramebuffers:Segfault dans 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); 

Je suis en Ubuntu 12.04 avec une carte Nvidia en utilisant les derniers pilotes propriétaires de Nvidia fournies par le système d'exploitation. Je ne suis pas très familier avec OpenGL, une grande partie de ce code est celle de mon partenaire, et il semble être perplexe aussi. Si vous avez besoin de plus amples informations, je suis heureux de le fournir.

+2

Avez-vous déjà vérifié les erreurs en appelant 'glGetError()' quelque part dans votre code? Peut-être que sa sortie pourrait vous aider. – Gnosophilon

+2

Le pointeur ou la fonction glGenFramebuffers? Si pointeur - est-ce un valide (pas NULL)? Le contexte OpenGL est-il créé lorsque vous exécutez ce code? –

Répondre

3

La réponse s'est avérée très simple. Les codeurs OSX n'ont pas besoin d'appeler glewInit() avant de commencer à utiliser les appels glew - Linux et Windows le font. De plus, j'ai découvert une autre information intéressante: Vérifiez si vous êtes capable d'effectuer un rendu direct en utilisant glxinfo. Cela peut faire toute la différence lors de l'exécution de programmes OpenGL.