【发布时间】:2013-12-24 21:21:20
【问题描述】:
就我而言..这个问题是通过更新显卡驱动解决的。
我在 stackoverflow 和互联网上搜索并找到了有同样问题的人。但是,答案并没有解决我的问题。
我正在使用 SDL2 和 GLEW。当我运行应用程序时,执行此函数时收到“访问冲突”错误:
glGenVertexArrays(1, &VertexArrayID);
我的代码:
bool Game::initSDL(char* title, int xpos, int ypos, int width, int height, int flags) {
if(SDL_Init(SDL_INIT_EVERYTHING)>=0) {
Uint32 flags = SDL_WINDOW_SHOWN|SDL_WINDOW_OPENGL;
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION,4);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
mainWindow = SDL_CreateWindow(title, xpos, ypos, width, height, flags);
mainGLContext = SDL_GL_CreateContext(mainWindow);
SDL_GL_SetSwapInterval(1);
// Initialize GLEW
glewExperimental = true; // Needed for core profile
GLenum err = glewInit();
if (GLEW_OK != err)
{
/* Problem: glewInit failed, something is seriously wrong. */
fprintf(stderr, "Error: %s\n", glewGetErrorString(err));
}
// Dark blue background
glClearColor(0.0f, 0.0f, 0.4f, 0.0f);
GLuint VertexArrayID;
glGenVertexArrays(1, &VertexArrayID);
glBindVertexArray(VertexArrayID);
} else {
return false;
}
return true;
}
【问题讨论】:
-
尝试先将 VertexArrayID 设置为 0 GLuint VertexArrayID = 0;
-
@jamolnng:这是毫无意义的操作
-
感谢您的评论。不幸的是,它仍然不起作用(同样的错误)。
-
@user3125591:检查你是否真的得到了 3.x 上下文,并且`glGenVertexArrays` 实际上是一个非
NULL指针。 -
@derhass 值得一试,有时它是最简单的事情,尤其是如果某些东西没有初始化,即使它是一个整数。