初始化后的glfw段错误

时间:2014-12-10 19:50:37

标签: c opengl graphics glfw glew

我构建了glfw,并且测试中的程序运行得很好,但是,当我尝试编写自己的程序时,它会在while(!glfwWindowShouldClose(window))行进行段错误,当我删除它时glfwPollEvents()上的段错误。我用cc window.c -lglfw3 -lGLEW -lGL -lX11 -lGLU -lXxf86vm -lXrandr -lpthread -lXi -lm -lXinerama -lXcursor编译它。为什么这些函数是segfault,为什么不进行初始化函数。完整的计划包括以下。

#include <GL/glew.h>
#include <GLFW/glfw3.h>

int main(int argc, char** argv){
    glfwInit();

    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
    GLFWwindow* window = glfwCreateWindow(800, 600, "gl", NULL, NULL);
    glfwMakeContextCurrent(window);

    //glewExperimental = GL_TRUE;
    glewInit();

    glViewport(0, 0, 800, 600);
    while(!glfwWindowShouldClose(window)){
        glfwPollEvents();
        glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT);
        glfwSwapBuffers(window);
    }
    glfwTerminate();
        return 0;
}

1 个答案:

答案 0 :(得分:1)

只需将此行添加到初始化:

glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

然后它会起作用! ; - )

你可能正在使用Mac,对吗?解释就在这里: http://www.glfw.org/faq.html#how-do-i-create-an-opengl-30-context