2

我刚刚从 GLFW 2.7 升级到 3.0.1。在摆弄它以使其工作后,我在调用 glGenVertexArrays(); 时遇到了访问冲突;

Graphics::Graphics():camera(*this){
    glfwInit();

    glfwWindowHint( GLFW_CONTEXT_VERSION_MAJOR, 3 );
    glfwWindowHint( GLFW_CONTEXT_VERSION_MINOR, 2 );
    glfwWindowHint( GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE );

    glfwWindowHint( GLFW_RESIZABLE, GL_FALSE );
    window = glfwCreateWindow(800, 600, "OpenGL Window", 0, 0);

    // Initialize GLEW
    glewExperimental = GL_TRUE;
    glewInit();

    // Create Vertex Array Object
    glGenVertexArrays(1, &vao);
    glBindVertexArray(vao);
}

我不确定出了什么问题,因为这在以前有效,尽管代码(除了 gen 和 bind 调用)是在初始化函数中而不是在构造函数中(因为 GLFW 现在支持多窗口,尽管我只打算使用一个) .

4

1 回答 1

4

好吧,我在这里意识到了这个问题。在 GLFW 3 中,您需要使上下文成为当前的。这是通过 glfwMakeContextCurrent() 完成的。

于 2013-06-25T17:30:41.480 回答