SDL OpenGL:创建缓冲区时访问违规



我正在尝试使用sdl制作窗口,然后使用glew and opengl绘制。

到目前为止,我已经制作了一个窗口并用OpenGL初始化了它,但是当我尝试创建一个缓冲区时,我会得到有线异常。

我的代码看起来像这样:

#include <GLglew.h>
#include <SDL.h>
#include <iostream>
int main(int argc, char** argv)
{
    SDL_Window* window;
    SDL_Init(SDL_INIT_EVERYTHING);
    //creating SDL window
    window = SDL_CreateWindow("",100,100,500,400,SDL_WINDOW_OPENGL);
    //setting up opengl
    SDL_GL_CreateContext(window);
    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
    glClearColor(0.6f, 0.0f, 0.0f, 1.0f);
    //check if glew was initialized properly
    if (glewInit() == GLEW_OK)
        std::cout << "glew ok" << std::endl;
    else
        goto end;
    ////////////////////////////////////////////////I'm Getting The Error Here
    GLuint bufferID;////////////////////////////////
    glCreateBuffers(1,&bufferID);///////////////////
    glDeleteBuffers(1,&bufferID);///////////////////
    SDL_Event sdlEvent;
    //event loop
    while (1)
        while (SDL_PollEvent(&sdlEvent))
            if (sdlEvent.type == SDL_QUIT)
                goto end;
    end:
        SDL_Quit();
    return 0;
}

错误:Exception thrown at 0x00000000 in opengl_project.exe: 0xC0000005: Access violation executing location 0x00000000.

问题是OpenGL已过时(版本4.3),而GlCreateBuffers是4.5 功能

如果您有一个模拟问题,则解决方案可以更新图形驱动程序或仅使用GlgenBuffers(版本1.5 )。

最新更新