SDL OpenGL应用程序在发布模式下崩溃

时间:2016-09-06 23:42:52

标签: c++ visual-studio opengl sdl glew

我在visualstudio中有一个奇怪的问题,如果我在发布模式下构建程序,每个opengl函数都会指向NULL。

我试过glew和gl3w没有一个工作

glew / gl3w在创建上下文后初始化,在调试模式下运行正常

项目设置是默认的,我只包括包含文件夹和相应的lib文件夹

有没有人有类似的问题?

#include<SDL.h>
#include<GL\glew.h>
#include<assert.h>

int main(int argc, char* args[])
{
    SDL_Init(SDL_INIT_VIDEO);

    SDL_Window *window;
    SDL_GLContext context;

    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4);
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
    SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);

    window = SDL_CreateWindow("Test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN);
    context = SDL_GL_CreateContext(window);
    SDL_GL_MakeCurrent(window, context);
    glewExperimental = GL_TRUE;
    assert(!glewInit());

    GLuint id;
    glGenVertexArrays(1, &id);

    SDL_Quit();
    return 0;
}

1 个答案:

答案 0 :(得分:2)

assert(!glewInit());

这不会在发布模式下编译。因此永远不会调用glewInit()glGenVertexArrays()将保持为NULL。

调用NULL函数指针通常不会起作用。