SDL OpenGL 应用程序在发布模式下崩溃
SDL OpenGL app crashing in release mode
我在 visualstudio 中遇到 opengl 的奇怪问题,如果我在发布模式下构建程序,每个 opengl 函数都指向 NULL。
我已经尝试过 glew 和 gl3w none 它们的工作
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;
}
assert(!glewInit());
不会在发布模式下编译。所以 glewInit()
将永远不会被调用并且 glGenVertexArrays()
将保持为 NULL。
调用 NULL 函数指针通常是行不通的。
我在 visualstudio 中遇到 opengl 的奇怪问题,如果我在发布模式下构建程序,每个 opengl 函数都指向 NULL。
我已经尝试过 glew 和 gl3w none 它们的工作
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;
}
assert(!glewInit());
不会在发布模式下编译。所以 glewInit()
将永远不会被调用并且 glGenVertexArrays()
将保持为 NULL。
调用 NULL 函数指针通常是行不通的。