我遇到了段错误,无法弄清原因。我正在工作的人可以在OSX机器上编译并正常运行。 gdb backtrace让我知道它来自这段代码,特别是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卡运行12.04 Ubuntu,并使用操作系统提供的Nvidia的最新专有驱动程序。我对OpenGL并不是很熟悉,很多代码是我的伙伴的,他似乎也很困惑。如果您需要其他任何信息,我们很乐意提供。

最佳答案

答案实际上很简单。 OSX编码人员在开始使用glew调用之前不需要调用glewInit()-Linux和Windows用户则需要这样做。另外,我还发现了一些有趣的信息:检查是否能够使用glxinfo执行直接渲染。在运行OpenGL程序时,它可以发挥所有作用。

09-04 09:32