问题标签 [imgui]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
565 浏览

c++ - 使用 ImGui 显示更长的字符串

我正在使用 ImGui,OpenGL 的实现工作正常,但现在我在渲染一些文本时遇到了问题。出于某种原因,每当我尝试使用ImGui::Text(someString.c_str());ImGui 渲染字符串时,只会渲染前 19 个字符。如果我尝试使用ImGui::Text("This is a Text longer than 19 characters")ImGui 呈现相同的文本,则会呈现整个文本。

我也尝试了ImGui::TextUnformatted(&someString[0], &someString[someString.size()-1]);,结果相同:显示了前 19 个字符,但其余的被删除了。

但如果我这样做std::clog << someString.c_str(),它完全可以正常工作。

如果有人能发现我的错误,我会很高兴,我尝试了很多小时但无法修复它。

0 投票
1 回答
527 浏览

c# - 从反射中获取对场的引用

我正在开发一个 OpenGL 游戏引擎作为一个激情项目,我使用 UI 库“Dear ImGUI”来显示和调试类似于 Unity 检查器的值。我很难想出一种方法来获取对我正在尝试调试的字段的引用。

这是我目前得到的代码,但问题是它不是对实际字段的引用,它只是对局部变量(值)的引用,因此,它实际上并没有设置我在图形用户界面。从我所看到的来看,没有明确的方法来获取参考。

有什么方法可以引用在 foreach 中循环的实际字段?在我的脑海中,我会想象它看起来像这样:

谢谢!

编辑:

我发现我的个人解决方案在下面的代码中,但非常感谢@pinkfloydx33 帮助我更好地理解问题并提供高质量的答案。

0 投票
0 回答
304 浏览

c++ - 如何使用 ImGui 为嵌套树视图 ui 组件构建良好的抽象?

我想使用 ImGui 创建一个嵌套的树视图 ui 组件。结果将如下所示:

在此处输入图像描述

这是创建Selectable()元素嵌套所需的代码,如下所示:

在此处输入图像描述

此代码还使小箭头和Selectable可独立点击的功能很棒。这意味着我可以在单击Selectable箭头旁边的时候触发事件:

在此处输入图像描述

由于以这种方式手动编码时很容易出错,我想我会使用递归来处理创建这些嵌套元素。你会怎么做?

0 投票
2 回答
1190 浏览

c++ - 单击按钮后,ImGui 冻结

我在我的 UI 应用程序中使用 ImGui。我的问题是当我按下按钮时,'if condition' 中的代码将执行。但是一旦我按下按钮,我就无法按下其他按钮,包括按下的按钮。任何人都可以让我知道是什么问题吗?

示例代码:

0 投票
0 回答
241 浏览

c++ - 我的 Imgui 菜单代码中的 LNK2001,但我有所有正确的包含

我在让我正在创建的 Imgui 菜单正常工作时遇到问题,我没有错误,但有一个错误,这个未解决的外部 LNK2001。我已经为这一行正确包含了所有内容,并且定义在我的include中的 d3d9.h 中。任何帮助,将不胜感激。如果还有其他需要提供 LMK。

错误 错误行(第一行)

0 投票
1 回答
806 浏览

git - 是否可以在柯南包管理器中使用 github 分支?

我想使用 imguis 对接分支。我想弄清楚的问题是使用柯南包管理器是否可以要求特定的分支,或者我是否需要编写自定义脚本来定位包中的特定分支?我能够获得主要的 imgui 包,但在目标分支上没有找到任何东西。

我目前正在使用 cmake 和 conanfile.txt。

这是目前我的conanfile.txt

0 投票
1 回答
76 浏览

winforms - 拖动移动闪烁窗口的位置

我正在实现 .NET 的DragMove方法的 Rust 替代方法,但是结果导致应用程序在两个相对位置之间闪烁。

请参阅截屏视频示例项目

我用来执行拖动移动的代码:

0 投票
1 回答
308 浏览

rust - 将不可克隆的非静态对象传递给需要静态数据的线程

我正在使用 ImGui Rust 绑定,我有一个大问题:我需要从另一个线程访问窗口的“系统”变量:这个变量授予对几个函数的控制权,例如更改窗口大小。我需要在.build(ui, || { })块中访问这个变量。此代码取自(但已缩短)的示例:https ://github.com/Gekkio/imgui-rs/blob/master/imgui-examples/examples/hello_world.rs

这是一个问题,因为事件循环函数(即 .build() 函数中的 lambda)必须使用“移动”来传递所有变量的所有权,因此它们本质上需要静态生命周期。

我遇到过几篇几乎有同样问题的人的帖子,但我的数据是非静态的,不可复制的。这就是头痛发生的地方。

因为我也需要一个全局状态,所以最好将此变量包装在一个结构中。我设法使结构可以毫无问题地传递给线程,但“系统”变量仍然拒绝工作。

以下是我尝试过的一些场景示例:

这不起作用,原因如下:

Arc由于 value 具有 type std::option::Option<support::System>,它没有实现 Copytraitrustc(E0507) main.rs(31, 5) 导致无法移出move 发生:考虑借用Option的内容

借款是行不通的,所以这肯定很烦人。然后我们只需在结构中存储对support::System的引用,这样就可以解决问题,对吧?

这不起作用,因为 Rust 编译器认为数据的寿命不够长(我知道它会,但编译器无法正确确定)

system借来的价值不够长 生存时间不够长rustc(E0597) main.rs(59, 1):system在仍然借用的时候丢到这里 main.rs(25, 17): 参数要求system借用'static

好吧,这听起来很合理。然后只需使用Box<>将其分配到堆上并忘记整个问题。

这会导致类型稍微复杂一些的错误:

cannot move out **system1which is behind a shared reference move 因为**system1有类型support::System,它没有实现Copytraitrustc(E0507)

什么?我正在尝试访问参考,我不想复制任何内容。

我没主意了。我在 C++ 中有几乎完全相同的代码,并且可以毫无问题地工作,因为 C++ 不关心变量所有权:您可以随意传递“状态”指针。

我还想补充一点,我通过将“状态”包装在Arc<Mutex<>>中尝试了相同的Arc<>场景。它会导致示例触发的相同错误之一。我还尝试使用该结构的静态版本,但这会产生它不可变的问题,并且我相信它会引发相同的所有权错误。

我有一种感觉,这很容易解决,但它确实需要一些(高级)Rust 借用机制的经验。我是 Rust 新手(不到一周的爱好经验),我可以掌握很多概念,但我本质上需要避免这里的所有权机制,因为数据必须是全局共享的。

我希望有经验的 Rustacean 知道解决这个问题!提前非常感谢。

0 投票
1 回答
447 浏览

c++ - 无法将 imgui 添加到现有场景 OpenGL

我正在尝试添加 imgui 来调试场景,但无论我调用渲染的顺序如何,imgui 总是在后面渲染。如果单独完成,场景和 imgui 渲染效果很好(评论其他)。我尝试禁用深度测试,使用模板功能,每次 imgui 首先呈现。渲染循环是

也用于初始化 ImGui,因为我使用 opengl 4.4 初始化了窗口核心

此代码也位于不同的名称空间中,并生成一个 dll 文件,然后将其链接。

编辑:我得到了错误,它实际上不是我在使用ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());之后glfwSwapBuffers(window);

0 投票
1 回答
80 浏览

go - 纹理如何在OpenGL3中显示为颜色而不是灰度?

我正在使用 Golang 开发一个 GUI 程序。

我正在为我的 GUI 使用 imgui-go 框架。

现在,我遇到了颜色纹理显示问题。

我已经从文件中加载了图像,并将图像制作为纹理,然后附加到 GUI 上。

图像肯定是彩色的,但它在 gui 上显示灰度。

这个问题有最好的解决方案吗?

谢谢你。

OpenGL片段着色器:

图像纹理:

在此处输入图像描述