glCreateProgram访问冲突执行位置0x00000000

时间:2015-11-18 20:39:36

标签: c++ opengl access-violation

我初始化了GLFW,我可以调用其他gl函数。可以使用OpenGL管道绘制面。但是,在执行glCreateProgram()时,它会给我这个错误。

错误:

  

Voxel.exe中0x00000000处抛出异常:0xC0000005:Access   违规执行位置0x00000000。

简化代码:

void error_callback(int error, const char* description)
{
    cerr << description << endl;
}
[...]
if (!glfwInit())
    {
        cout << "Failed to create GLFW3 / OpenGL context";
        system("PAUSE");
        exit(EXIT_FAILURE);
    }
    else
        cout << "GLFW3 initialized!" << endl;

    glfwSetErrorCallback(error_callback);

    glFrontFace(GL_CW);
    glCullFace(GL_BACK);
    glEnable(GL_CULL_FACE);
    glEnable(GL_DEPTH_TEST);
width = 600;
    height = 600;
    this->window = glfwCreateWindow(width, height, "voxel", NULL, NULL);
    glfwSetWindowSize(this->window, width, height);
    glfwGetFramebufferSize(window, &width, &height);
    glViewport(0, 0, width, height);
    if (!this->window)
    {
        glfwTerminate();
        exit(EXIT_FAILURE);
    }
    glfwMakeContextCurrent(this->window);
    glfwSwapInterval(0);

    cout << "OpenGL version: " << glGetString(GL_VERSION) << endl;
GLuint program = glCreateProgram();
[...]

我不明白,为什么会这样。

1 个答案:

答案 0 :(得分:2)

GLFW不会为您加载扩展和现代功能。因此glCreateProgram是未初始化的。

您需要一个实际的扩展加载器。你还要检查glCreateProgram等。实际上是由您的目标系统支持。