在 OpenGL 中创建 GUI,可以吗? [关闭]
Posted
技术标签:
【中文标题】在 OpenGL 中创建 GUI,可以吗? [关闭]【英文标题】:Creating a GUI in OpenGL, is it possible? [closed] 【发布时间】:2020-04-15 00:58:06 【问题描述】:我正在尝试在 C++ 中从头开始在 OpenGL 中创建自定义 GUI,但我想知道是否可能?
我现在开始编写一些代码,但在得到答案之前我会停下来。
【问题讨论】:
绝对是的。虽然可能不实用。看看github.com/ocornut/imgui你可以使用opengl来渲染GUI。 【参考方案1】:https://www.twitch.tv/heroseh
每天上午 9 点(美国东部标准时间)左右在纯 C + OpenGL 用户界面库上工作。
这是他们的项目的 github 存储库:
https://github.com/heroseh/vui
我自己正处于一个半途而废的用户界面中 只是一个可点击按钮的列表。 (www.twitch.com/kanjicoder)
我运行的基本想法是 GPU 和 CPU 都需要了解您的 数据。因此,我将 UI 所需的所有变量存储在纹理中,然后 每次更改时,都会将该纹理与 GPU 同步。
在 CPU 端,它是一个 uint8 字节数组。 在 GPU 方面,它是无符号的 32 位纹理。
我在 GPU(GLSL 代码)和 CPU(C99)代码上都有 getter 和 setter 管理纹理像素内外变量的打包和解包。
这有点疯狂。但我想要“最小公分母”的创建方法 一个 UI,这样我以后就可以轻松地将其移植到我选择的任何图形库中。 例如...最终我可能想从 OpenGL 切换到 Vulkan。所以如果我保持 我的大部分逻辑只是对一个大的 512x512 像素阵列的操作,我不应该 有太多的重构工作摆在我面前。
【讨论】:
【参考方案2】:是的。
如果您玩视频游戏,一般来说,每个 UI 都应该由 OpenGL、DXD、Metal 或 Vulkan 等 API 实现。由于渲染表面比 OS UI API 具有更高的帧速率,因此将它们一起使用会减慢游戏速度。
从将视图类作为基类开始,实现从基类继承的实际 UI 类,如按钮、表格等。
使用 GFX API 制作 UI 类似于使用相同的图形技术制作游戏,例如纹理压缩、Mipmap、MSAA 和一些特殊效果等。然而,处理字体是一个很大的部分,为此,许多游戏开发者使用游戏引擎/UI 库。
【讨论】:
以上是关于在 OpenGL 中创建 GUI,可以吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章