2012-06-07 18 views
5

私はsegfaultsを取得していますが、その理由を理解できません。私が作業している人は、OSXマシンでコンパイルして正しく動作します。私はOSが提供するのNvidiaから最新のプロプライエタリドライバを使用してNvidiaのカードで12.04のUbuntuを実行しているglGenFramebuffersのSegfault

// 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); 

:gdbのバックトレースは、それがglGenFramebuffersから、具体的には、コードのこのセクションから来ることを私に与えます。私はOpenGLに非常に精通していません、このコードの多くは私のパートナーであり、彼も同様に困惑しているようです。さらなる情報が必要な場合は、私はそれを提供しています。

+2

コードのどこかで 'glGetError()'を呼び出してエラーをチェックしましたか?おそらくその出力はあなたを助けるかもしれません。 – Gnosophilon

+2

glGenFramebuffersはポインタまたは関数ですか?ポインタが有効な場合(NULLでない場合)は?このコードを実行すると、OpenGLコンテキストが作成されますか? –

答えて

3

答えは実際には本当に簡単であることが判明しました。 OSXのコーダーは、glew呼び出しを使用する前にglewInit()を呼び出す必要はありません - LinuxとWindowsのユーザーはそうします。また、興味深い情報がありました。glxinfoを使用して直接レンダリングを実行できるかどうかを確認してください。 OpenGLプログラムを実行しているときにすべての違いを生むことができます。