OpenGL中的GUI工具包

GUI Toolkit in OpenGL

本文关键字:工具包 GUI 中的 OpenGL      更新时间:2023-10-16

我想开发一个应用程序(在c++中)类似于Pure Data,但有一个很酷的GUI和更好的文档…是的,像Max/MSP或Reaktor这样的东西,但是是免费开放的!

为了创造一个吸引人的,反应性的和可移植的界面,我正在考虑使用OpenGL。在我的脑海中有一些类似Blender的GUI。

在开始开发我的定制GUI工具包之前,我搜索了一下,以了解是否存在我可以使用的东西,我发现:

    Juce:它似乎很受支持,但我不明白你是否只能在你的界面中嵌入OpenGL画布,或者可以使用OpenGL渲染所有的小部件。nUI:看起来很酷很便携,但是……它的论坛是一个沙漠,真的很难找到一个教程!
  • ceGUI, FLTK, GLUI:如此平坦和灰色;-)和任何仍然没有维护。

你知道其他的工具箱吗?如你所知,我正在寻找一个可移植的库(在c++中),快速和支持。

另一种可能性是使用SDL或Freeglut从头开始开发我的自定义工具包,在这种情况下,哪个可能是最好的解决方案?

注。阅读关于这个主题的其他线程,我注意到许多开发人员建议使用Qt…Qt能否依赖OpenGL进行渲染?或者只能承载OpenGL画布?无论如何,你认为有可能(具有良好的性能)在Qt中创建这样的东西:

    Reaktor GUI示例1Reaktor GUI示例2
  • Blender合成示例

并没有真正好的openGL工具包,它们往往是为特定的应用而发明的,然后就被抛弃了。

是的Qt与openGL工作得很好,有一个openGL QGlWidget与完整的硬件加速(和可选的链接到openCL)。您可以在Qt应用程序中拥有尽可能多的QGLwidgets -每个控件都有自己的openGL命令。

你也可以混合Qt和openGL在同一个QGlWidget (http://doc.qt.nokia.com/qq/qq26-openglcanvas.html)

稍微偏离主题:你也可以选择Qt使用openGL进行所有渲染-这仍然是实验性的,但这意味着2d Qt在一些嵌入式平台(如手机)上可以快得多。编辑:澄清-整个应用程序仍然是正常的Qt,但绘制与openGL命令"引擎盖下"

我喜欢杂乱和MX.

参见http://www.clutter-project.org/和https://github.com/clutter-project/mx

Qt 5.7及以上版本在QML中提供了QtQuick Controls 2.0,它是在OpenGL中实现的。

http://doc.qt.io/qt-5/qtquickcontrols2-index.html

他们的API非常稳定,可以在Android, iOS, macOS, Windows, GNU/Linux等平台上运行。

这是一本关于QML的好书中的一个小hello world。https://qmlbook.github.io/en/ch02/index.html hello world

你用QML编写JavaScript, QMake构建系统将其转换为c++目标代码。

import QtQuick 2.5
Rectangle {
    width: 360
    height: 360
    Text {
        anchors.centerIn: parent
        text: "Hello World"
    }
    MouseArea {
        anchors.fill: parent
        onClicked: {
            Qt.quit();
        }
    }
}