SDL2 - 检查是否创建了 OpenGL 上下文
SDL2 - Check if OpenGL context is created
我正在使用SDL2和OpenGL创建一个应用程序,它在3台不同的计算机上运行良好。但是在另一台计算机(更新的 arch linux)上,它没有,并且它崩溃并出现此错误:
OpenGL context already created
所以我的问题是:如何检查OpenGL上下文是否已创建?然后,如果它已经创建,我如何获得它的句柄?
如果我无法执行此操作,如何绕过此问题?
SDL2 实际上不会在没有您要求的情况下创建 OpenGL 上下文。但是,如果你要求它在OpenGL根本不起作用时创建一个OpenGL上下文,SDL2喜欢,呃,自由式。(实际原因是它在错误检查方面做得不好,所以如果 X 无法创建 OpenGL 上下文,它会假设这是因为已经创建了上下文)
因此,要回答第三个问题("如何绕过此问题"),您必须在尝试使用它之前修复 OpenGL。数字,对吧?
回答第一个和第二个,好吧,我知道没有 API 调用......但是你可以用稍微不同的方式做到这一点:
SDL_Window* window = NULL;
SDL_GLContext* context = NULL; // NOTE: This is a pointer!
...
int main(int argc, char** argv) {
// Stuff here, initialize 'window'
*context = SDL_GL_CreateContext(window);
// More stuff here
if (context) {
// context is initialized!! yay!
}
return 2; // Just to confuse people a bit =P
}
相关文章:
- 为什么我不能使用 EGL 创建无头 OpenGl 上下文?
- 当要求兼容性时,核心OpenGL上下文?
- GTKmm Opengl 上下文未初始化
- Electron中神秘无效的OpenGL上下文
- 是多个线程渲染到单个OpenGL上下文线程安全的线程
- 如何为 QtQuick 应用程序选择 OpenGL 上下文
- SetPixelFormat() 中的第三个参数对于 OpenGL 上下文创建有什么意义?
- 使用WGL创建现代OpenGL上下文
- 如何为第三方渲染提供空的QML项目的OpenGL上下文
- 用于在许多Qopenglwidget中显示的FBO渲染的全局OpenGL上下文
- 在 Mac OS X 10.9 中使用 GLFW 创建 OpenGL 3.3 上下文
- SDL_net没有创建OpenGL上下文
- 在运行时从OpenGL上下文切换到D3D/DX上下文(或其他上下文)
- 如何检查当前的 OpenGL 上下文是否在 Geforce 卡上运行
- GLFW无法在Mavericks上获取OpenGL 4.1上下文
- 如何使用SFML 2.2切换OpenGL上下文的线程
- 创建OpenGL 4.3上下文崩溃GLX
- SDL2要么丢失OpenGL上下文或未定义的函数
- OpenGL 上下文创建期间未记录的错误
- 在渲染以外的另一个线程中初始化 OpenGL 上下文