ImGui Node Editor 使用教程

ImGui Node Editor 使用教程

imgui-node-editorNode Editor built using Dear ImGui项目地址:https://gitcode.com/gh_mirrors/im/imgui-node-editor

1. 项目的目录结构及介绍

ImGui Node Editor 是一个基于 ImGui 的节点编辑器实现,其项目结构如下:

imgui-node-editor/
├── examples/
│   ├── simple-example.cpp
│   ├── blueprints-example.cpp
│   └── ...
├── imgui_node_editor.h
├── imgui_node_editor.cpp
├── README.md
├── LICENSE
└── ...

主要目录和文件介绍:

  • examples/: 包含多个示例文件,如 simple-example.cppblueprints-example.cpp,展示了如何使用节点编辑器。
  • imgui_node_editor.h: 节点编辑器的主要头文件。
  • imgui_node_editor.cpp: 节点编辑器的实现文件。
  • README.md: 项目说明文档。
  • LICENSE: 项目许可证文件。

2. 项目的启动文件介绍

项目的启动文件通常位于 examples/ 目录下,例如 simple-example.cpp。以下是 simple-example.cpp 的简要介绍:

#include <imgui.h>
#include <imgui_node_editor.h>
#include <application.h>

namespace ed = ax::NodeEditor;

struct Example: public Application {
    using Application::Application;

    void OnStart() override {
        ed::Config config;
        config.SettingsFile = "Simple.json";
        m_Context = ed::CreateEditor(&config);
    }

    void OnStop() override {
        ed::DestroyEditor(m_Context);
    }

    void OnFrame(float deltaTime) override {
        auto& io = ImGui::GetIO();
        ImGui::Text("FPS: %.2f (%.2gms)", io.Framerate, io.Framerate / 1000.0f);
        ImGui::Separator();
        ed::SetCurrentEditor(m_Context);

        ed::Begin("My Editor", ImVec2(0, 0));
        int uniqueId = 1;
        ed::BeginNode(uniqueId++);
        ImGui::Text("Node A");
        ed::BeginPin(uniqueId++, ed::PinKind::Input);
        ImGui::Text("-> In");
        ed::EndPin();
        ImGui::SameLine();
        ed::BeginPin(uniqueId++, ed::PinKind::Output);
        ImGui::Text("Out ->");
        ed::EndPin();
        ed::EndNode();
        ed::End();

        ed::SetCurrentEditor(nullptr);
    }

    ed::EditorContext* m_Context = nullptr;
};

int Main(int argc, char** argv) {
    Example example("Simple", argc, argv);
    if (example.Create())
        return example.Run();
    return 0;
}

主要功能:

  • OnStart(): 初始化节点编辑器。
  • OnStop(): 销毁节点编辑器。
  • OnFrame(): 每一帧的渲染逻辑,包括节点的绘制和交互。

3. 项目的配置文件介绍

节点编辑器的配置文件通常在 OnStart() 方法中设置,例如:

void OnStart() override {
    ed::Config config;
    config.SettingsFile = "Simple.json";
    m_Context = ed::CreateEditor(&config);
}

配置项:

  • SettingsFile: 配置文件的路径,用于保存和加载节点编辑器的状态。

通过这些配置,可以自定义节点编辑器的行为和外观。


以上是 ImGui Node Editor 的基本使用教程,涵盖了项目的目录结构、启动文件和配置文件的介绍。希望这些内容能帮助你更好地理解和使用该项目。

imgui-node-editorNode Editor built using Dear ImGui项目地址:https://gitcode.com/gh_mirrors/im/imgui-node-editor

nodeeditor是一个基于Qt的节点编辑器,用于数据流编程框架。它提供了一个可视化的界面,让用户可以通过连接不同的节点来构建数据流图。每个节点代表一个特定的功能或操作,而连接则表示数据的流动。 在nodeeditor中,用户可以创建自定义的节点,并定义节点之间的连接规则。每个节点可以有输入和输出端口,用于接收和发送数据。用户可以通过拖拽和连接不同的节点来构建数据流图,并通过节点之间的连接来传递数据。 nodeeditor还提供了一些常用的连接风格类,如ConnectionStyle,用于定义节点之间连接的样式和外观。用户可以根据自己的需求自定义连接的样式,以使数据流图更加直观和易于理解。 以下是一个简单的示例,演示了如何使用nodeeditor创建一个简单的数据流图: ```python from nodeeditor.node_editor_widget import NodeEditorWidget from nodeeditor.utils import dumpException try: # 创建一个节点编辑器窗口 nodeEditor = NodeEditorWidget() # 创建两个节点 node1 = nodeEditor.createNode("Node", pos=(80, 80)) node2 = nodeEditor.createNode("Node", pos=(320, 80)) # 创建连接 nodeEditor.createConnection(node1.outputs()[0], node2.inputs()[0]) # 显示节点编辑器窗口 nodeEditor.show() except Exception as e: dumpException(e) ``` 这个示例创建了一个包含两个节点的数据流图,节点之间通过连接进行数据传递。你可以根据自己的需求添加更多的节点和连接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曹俐莉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值