【发布时间】:2015-06-21 11:19:25
【问题描述】:
我正在使用 OpenGL、GLEW 和 SDL2 制作一个简单的应用程序,它在屏幕上绘制了一个简单的四边形(我正在使用现代 OpenGL 遵循lazyfoo 网站上的示例)。 当我使用 opengl 3.1 版时,一切正常,但如果我使用 OpenGL 3.2+ 版,则绘制命令不起作用(三角形不出现)。有人知道我做错了什么吗?
这就是我设置一切的方式:
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
return false;
}
SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
m_pWindow = SDL_CreateWindow("Hello World!", 100, 100, 800, 600, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN );
m_pGLContext = SDL_GL_CreateContext(m_pWindow);
glewExperimental = GL_TRUE;
GLenum glewError = glewInit();
if (glewError != GLEW_OK)
{
return false;
}
//Use Vsync
if (SDL_GL_SetSwapInterval(1) < 0)
{
return false;
}
如果你想检查它,从http://lazyfoo.net/tutorials/SDL/51_SDL_and_modern_opengl/index.php(在网站底部)获取一个文件 cpp 源,并尝试将 opengl 的版本从 3.1 更改为 3.2。
【问题讨论】:
-
您的硬件支持 OpenGL 3.2?