带有 SDL2 的 OpenGL 未返回正确的版本
OpenGL with SDL2 doesn't return the right version
我有一个SDL2应用程序,我想在其中创建一个OpenGL 3.2上下文。我在谷歌上搜索了一下,并开始遵循这个教程:http://open.gl/context#SDL
除了最后一步,一切似乎都很顺利。当我必须实现这段代码时:
GLuint vertexBuffer;
glGenBuffers(1, &vertexBuffer);
printf("%un", vertexBuffer);
我的应用程序似乎没有对应该在那里的函子的引用。我知道这里有些人有同样的问题,但我没有找到解决办法。当我输出GL_VERSION时,它说它是1.1.0,尽管我说它应该是3.2.0。下面是我的代码:
// START SDL
if (SDL_Init(SDL_INIT_VIDEO) != 0)
{
logSDLError(std::cout, "SDL_Init");
return 1;
}
// SETUP OPENGL SETTINGS
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
// OPENING WINDOW
m_pWindow = SDL_CreateWindow("SDL/OpenGL Game Client - With Networking Library", 100, 100, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_OPENGL);
if (m_pWindow == nullptr)
{
logSDLError(std::cout, "CreateWindow");
return 2;
}
// CREATE AN OPENGL CONTEXT ASSOCIATED WITH THE WINDOW.
m_GlContext = SDL_GL_CreateContext(m_pWindow);
if( m_GlContext == NULL )
{
printf( "OpenGL context could not be created! SDL Error: %sn", SDL_GetError() );
}
//Initialize GLEW
glewExperimental = GL_TRUE;
GLenum glewError = glewInit();
if( glewError != GLEW_OK )
{
printf( "Error initializing GLEW! %sn", glewGetErrorString( glewError ) );
}
printf((char*)glGetString(GL_VERSION));
我有一个FirePro显卡,应该能够运行OpenGL 4.0。我检查了我的驱动程序更新,一切都应该很好+我没有得到编译警告,说OpenGL或Glew或SDL可能有问题。
为了使glGetString()工作,我必须做的一件事是包含GLfreeglut.h。我真的不知道为什么,因为我遵循的教程中没有这么说。
我找到问题了。我忘了说我正在使用MSTSC从我的台式机远程到我的笔记本电脑(这更容易工作),显然这改变了图形设备。
我试着从实际的笔记本电脑上打开我的应用程序,突然它工作了,提供正确的OpenGL版本和一切。
愚蠢的错误,我应该早点发现的。
相关文章:
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 什么时候在C++中返回常量引用是个好主意
- 你能重载对象变量名本身返回的内容吗
- 为什么 Serial.println(<char[]>);返回随机字符?
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- VS2017 版本 15.8.3 成功编译内联方法,而不返回所需值
- C++14 强制转换以返回成员函数的类型 - 简洁版本
- 函数的内联版本返回的值与非内联版本不同
- MSVC OSVersion 返回不正确的版本
- collect2:错误:ld 在制作带有代码块的 .so 文件(64 位版本)时返回 1 个退出状态
- 如何在调试版本中测试断言,但在发布中返回值
- MFC ole服务器移植到较新版本 - afxgetThread返回null
- 提升的返回类型是什么::apply_visitor(延迟版本)
- SHGetFolderPath 在分发版本中返回垃圾字符串
- 为什么具有推导出的返回类型的模板不能被它的其他版本重载?
- 带有 SDL2 的 OpenGL 未返回正确的版本
- _BitScanForward64在c++.exe中返回错误答案(ruenvb-4.7.2-版本)
- 在x64上最新版本的Visual c++上,LoadLibrary返回193
- 在新版本的 gcc 上返回隐式不可复制结构的 std::map 时出现编译错误
- XML RPC - 如何在C++版本的 XMLRPC-C 库中包装、返回和获取 vector<map<string、string> > 的对象?