2016-09-06 60 views
-1

我有在VisualStudio的OpenGL的一个奇怪的问题,每一个OpenGL的功能点为NULL,如果我建立在释放模式程序崩溃。SDL的OpenGL应用程序在释放模式

我已经尝试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; 
} 
+0

感谢downvoting在我的文章非常有帮助,btw即时新 – Creysys

+0

请你可以提供一些更多的信息 - 你是如何加载GLEW/GL3W,你的项目设置等等。如果有什么工作在发布但不调试这意味着您正在获取某些未定义的行为,或者您的项目设置配置不正确。 – HexCoder

+0

我使用默认的项目选项除了附加的包括/库 – Creysys

回答

2
assert(!glewInit()); 

那是不会得到编译发布模式。所以glewInit()将永远不会被调用,glGenVertexArrays()将保持为NULL。

调用空函数指针通常是行不通的。

+0

感谢,现在我觉得自己像个白痴尝试每一个编译器选项^^ – Creysys

相关问题