1

有人可以推荐任何用于创建图形用户界面的好资源,最好是在 C/C++ 中?

目前我最大的影响是3DBuzz.comC++/OpenGL VTMs(视频培训模块)。虽然它们非常好,但它们涵盖了很大范围的图形编程,因此只浏览了 GUI 编程的表面。

这个问题确实与“我如何制作 GUI? ”有关,其中还有我当前结构的粗略轮廓。

任何回应将不胜感激。

编辑: 我刚刚阅读了一些答案,发现我错过了一些要点。我不得不输入两次问题,因为我抓住了错误的按钮并丢失了它。

我错过了两个重要的点,第一:这将用于跨平台,包括索尼 PSP 上的自制软件。第二:我想创建一个不使用现有系统的 GUI 系统。

编辑 2:我认为你们中的一些人没有抓住重点,我不知道如何使用我想要构建的现有 GUI 系统。

当前形式的 Qt 不能移植到 PSP 上,更不用说这种任务的过度杀伤力了。

也就是说,我决定创建一个 IM-GUI,并开始对代码进行原型设计。

4

9 回答 9

2

我不会将 OpenGL 用于 GUI,除非您计划使用更传统的 GUI 工具包(例如QtwxWidgetsGTK等)无法获得的硬件加速和/或 3D 效果。如果您只需要一个快速简单的 GUI 来托管您的 OpenGL 图形,那么FLTK是一个不错的选择。否则,为了直接在 OpenGL 中渲染 GUI,它们是像Crazy Eddie 的 GUI这样的库,它们可以做到这一点,并提供许多您不必重新发明的可换肤 小部件。然后可以为窗口和 OpenGL 上下文提供像SDL这样的可移植库。

编辑:既然我已经回去看了你的一篇文章,我想我对你的要求有了更好的理解。对于像 Nintendo DS 这样的嵌入式系统上的 GUI,我会考虑使用“即时模式”GUI。Jari Komppa有一个关于它们的很好的教程,但是你可以使用比他提供的 C 代码更面向对象的 C++ 方法。

于 2008-08-17T13:18:18.673 回答
1

看看Qt。它是一个用于制作 GUI 的开源库。与 Java 中的 Swing 不同,它假设了很多东西,因此制作功能性 GUI 真的很容易。例如,textarea 假定您需要一个上下文菜单,当您右键单击它时使用复制、粘贴、全选等。文档也非常好。

于 2008-08-17T12:58:57.013 回答
1

如果您正在寻找如何使用特定框架,http://www.fox-toolkit.org有一个 API 参考。还是您对一般理论更感兴趣,或者您对如何自己做低级工作更感兴趣?

于 2008-08-17T13:03:00.653 回答
1

有关“即时模式”GUI 的更多信息,我可以推荐Molly Rocket 论坛。有一个很好的视频演示了 IM-GUI 背后的思想,还有很多讨论。

我最近根据 Jari 页面上的演示编写了一个非常快速的 IM-GUI 系统,就我而言,我真的只是希望能够在屏幕上获得几个按钮和框,或多或少只是硬代码对输入的响应,它确实感觉是正确的做法,而不是采用更成熟的 GUI 架构。(这是在 DirectX 应用程序中,所以我的选择数量非常有限)。

于 2008-08-18T10:13:45.660 回答
1

最快的方法之一是将 python 与 pyQt、PyFLTK、tkinter、wxPython 之类的 gui 绑定一起使用,甚至通过使用 SDL 的 pygame。

它简单快速且独立于平台。包的管理也是无与伦比的。

看:

于 2008-08-19T13:49:31.153 回答
1

对于像 PSP 这样的平台,我会稍微担心 IM GUI 解决方案的性能。使用传统的保留模式类型的解决方案,当您创建控件时,您还可以创建顶点缓冲区/显示列表或渲染它所需的内容。使用即时模式解决方案,在我看来,您需要在每一帧动态地重新创建它。

你可能不关心这个,如果你只做几个按钮,或者它不会在游戏中使用(假设你正在制作游戏)但是,特别是如果你有相当多的文字,成本如果您找不到以某种方式缓存显示列表的方法,则渲染可能会开始受到影响。

于 2008-08-19T18:14:50.227 回答
0

我会第二个Qt。它是跨平台的,我发现它比内置的 Visual Studio GUI容易使用。它是双重许可的,所以如果您不希望您的代码成为 GPL,您可以购买许可证。

于 2008-08-18T13:23:17.603 回答
0

我看过 Molley Rocket 的视频并浏览了 Jari Komppa 的缓存教程。

IM-GUI 似乎是最好的方式,我认为它会比我最初设想的系统更加精简,构建起来也快得多。

现在一个新问题,我只能除了一个答案。:(

再次感谢 Monjardin 和 dooz,干杯。

东西2k

于 2008-08-19T11:19:04.920 回答
0

我会看看GLAMGLGooey

于 2008-08-19T11:47:09.277 回答