SDL_Renderer opengl 冲突

Posted

技术标签:

【中文标题】SDL_Renderer opengl 冲突【英文标题】:SDL_Renderer opengl conflict 【发布时间】:2017-04-19 21:01:07 【问题描述】:

我是 openGL 和 SDL 的新手,我编写的基本程序遇到了一些问题。我已经缩小了范围,问题似乎是 SDL_CreateRenderer 函数与 SDL 如何管理 OpenGL 之间的冲突。

基本上,该程序是一个简单的游戏,使用 OpenGL 绘制,而我创建菜单时出现了问题。由于游戏窗口是使用“SDL_WINDOW_OPENGL”标志创建的,因此我为菜单创建了另一个窗口。每当我需要在游戏和菜单之间切换时,我只需隐藏并显示我需要的任何窗口。要在菜单窗口上绘图,虽然我需要创建一个渲染器,但这样做之后,如果我尝试返回 OpenGL 窗口,一切都会发生灾难性的崩溃(计算机速度变慢,一切都没有响应......)。

谁能猜出问题出在哪里?或者任何人都可以提出更好的方法来解决我的游戏菜单问题?

【问题讨论】:

您需要提供MCVE。 好的!我在做这个工作!感谢您的建议! 您是否将 GL 上下文切换回初始窗口?也许软件渲染器会为你解决它,虽然我不明白你为什么首先需要单独的窗口。 【参考方案1】:

不要尝试互操作 OpenGL 和 SDL_Renderer:即使您可以保证您的平台在 OpenGL 方面实现/不实现 SDL_Renderer,SDL_Renderer API 也没有任何方法可以实现正确设置/恢复 SDL_Renderer 使用的 OpenGL 状态。

【讨论】:

以上是关于SDL_Renderer opengl 冲突的主要内容,如果未能解决你的问题,请参考以下文章

SDL 平台游戏中的 OpenGL 着色器?

带有着色器的 SDL_Renderer 和 SDL_Texture?

使用 glCreateVertexArrays 时的 OpenGL 异常

SDL + OpenGL:创建缓冲区时访问冲突

如何检测与 C++、OpenGL 和 freeglut 的冲突?

QtOpengl 与 mac 上的 Opengl 框架冲突