SDL2:如何同时拥有 SDL2 菜单和 OpenGL 上下文?

Posted

技术标签:

【中文标题】SDL2:如何同时拥有 SDL2 菜单和 OpenGL 上下文?【英文标题】:SDL2: how to have both a SDL2 Menu and an OpenGL context? 【发布时间】:2014-11-15 21:32:05 【问题描述】:

我正在尝试设计一个 SDL2 应用程序,它有一个主菜单(由几个 SDL2 纹理创建)和几个选项。

每当点击其中一个选项时,都会出现一个 OpenGL 上下文,或者替换当前窗口,或者创建一个新窗口(并隐藏具有主菜单的当前窗口)。稍后,在某个事件(例如,按下键盘键)之后,菜单应该会再次出现。

问题是:每当我在具有主菜单的 SDL_Window 对象中创建 OpenGL 上下文时,以后似乎无法恢复该菜单。它不会被渲染。

问题是:是否可以在同一个窗口中同时拥有 sdl 纹理元素和 opengl 上下文?当然不是同时:我想一次使用其中一个,用另一个替换。

如果答案是肯定的,我该如何实现?

【问题讨论】:

【参考方案1】:

经过一番研究,我发现这是不可能的。从 SDL 中初始化 OpenGL 后,您将无法再使用任何 SDL 绘图功能:您必须为所有菜单坚持使用 OpenGL,或者仅对它们使用 SDL 一次(=在初始化 OpenGL 之前)。

那么,SDL 实际上只对事件负责。

【讨论】:

以上是关于SDL2:如何同时拥有 SDL2 菜单和 OpenGL 上下文?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 cmake 中使用 emscripten 端口(SDL2 和 Freetype)

如何在我的程序中正确使用 SDL2?

如何从我的 kivy 程序中删除“sdl2 - ImportError”和“pil - ModuleNotFoundError”

SDL2和3D渲染

使用自制软件安装 SDL2 和 Xcode

基于 SDL2 的游戏和 GADBannerView