SDL OpenGL 应用程序在发布模式下崩溃 [重复]
Posted
技术标签:
【中文标题】SDL OpenGL 应用程序在发布模式下崩溃 [重复]【英文标题】:SDL OpenGL app crashing in release mode [duplicate] 【发布时间】:2016-09-06 23:42:51 【问题描述】:我在visualstudio中遇到了一个奇怪的opengl问题,如果我在发布模式下构建程序,每个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;
【问题讨论】:
感谢对我的帖子投反对票非常有帮助,顺便说一句,我是新人 请您提供更多信息 - 您是如何加载 GLEW/GL3W 的,您的项目设置是什么等。如果某些内容正在发布但未调试,则意味着您遇到了一些未定义的行为,或者您的项目设置配置不正确。 我使用默认项目选项,除了额外的包含/库 @Creysys 如果你需要帮助,你需要做一个minimal, complete, and verifiable example,而不是在这里发布。根据您提供的信息,几乎不可能知道出了什么问题。 好的,谢谢我添加了一个最小的、完整的、可验证的例子 【参考方案1】:assert(!glewInit());
这不会在发布模式下编译。所以glewInit()
永远不会被调用,glGenVertexArrays()
将保持为 NULL。
调用 NULL 函数指针通常不起作用。
【讨论】:
谢谢,现在我觉得自己像个白痴一样尝试每个编译器选项^^以上是关于SDL OpenGL 应用程序在发布模式下崩溃 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
SDL2:如何同时拥有 SDL2 菜单和 OpenGL 上下文?