问题标签 [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.
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()
,它完全可以正常工作。
如果有人能发现我的错误,我会很高兴,我尝试了很多小时但无法修复它。
c# - 从反射中获取对场的引用
我正在开发一个 OpenGL 游戏引擎作为一个激情项目,我使用 UI 库“Dear ImGUI”来显示和调试类似于 Unity 检查器的值。我很难想出一种方法来获取对我正在尝试调试的字段的引用。
这是我目前得到的代码,但问题是它不是对实际字段的引用,它只是对局部变量(值)的引用,因此,它实际上并没有设置我在图形用户界面。从我所看到的来看,没有明确的方法来获取参考。
有什么方法可以引用在 foreach 中循环的实际字段?在我的脑海中,我会想象它看起来像这样:
谢谢!
编辑:
我发现我的个人解决方案在下面的代码中,但非常感谢@pinkfloydx33 帮助我更好地理解问题并提供高质量的答案。
c++ - 单击按钮后,ImGui 冻结
我在我的 UI 应用程序中使用 ImGui。我的问题是当我按下按钮时,'if condition' 中的代码将执行。但是一旦我按下按钮,我就无法按下其他按钮,包括按下的按钮。任何人都可以让我知道是什么问题吗?
示例代码:
git - 是否可以在柯南包管理器中使用 github 分支?
我想使用 imguis 对接分支。我想弄清楚的问题是使用柯南包管理器是否可以要求特定的分支,或者我是否需要编写自定义脚本来定位包中的特定分支?我能够获得主要的 imgui 包,但在目标分支上没有找到任何东西。
我目前正在使用 cmake 和 conanfile.txt。
这是目前我的conanfile.txt
rust - 将不可克隆的非静态对象传递给需要静态数据的线程
我正在使用 ImGui Rust 绑定,我有一个大问题:我需要从另一个线程访问窗口的“系统”变量:这个变量授予对几个函数的控制权,例如更改窗口大小。我需要在.build(ui, || { })
块中访问这个变量。此代码取自(但已缩短)的示例:https ://github.com/Gekkio/imgui-rs/blob/master/imgui-examples/examples/hello_world.rs
这是一个问题,因为事件循环函数(即 .build() 函数中的 lambda)必须使用“移动”来传递所有变量的所有权,因此它们本质上需要静态生命周期。
我遇到过几篇几乎有同样问题的人的帖子,但我的数据是非静态的,不可复制的。这就是头痛发生的地方。
因为我也需要一个全局状态,所以最好将此变量包装在一个结构中。我设法使结构可以毫无问题地传递给线程,但“系统”变量仍然拒绝工作。
以下是我尝试过的一些场景示例:
这不起作用,原因如下:
Arc
由于 value 具有 typestd::option::Option<support::System>
,它没有实现Copy
traitrustc(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
**system1
which is behind a shared reference move 因为**system1
有类型support::System
,它没有实现Copy
traitrustc(E0507)
什么?我正在尝试访问参考,我不想复制任何内容。
我没主意了。我在 C++ 中有几乎完全相同的代码,并且可以毫无问题地工作,因为 C++ 不关心变量所有权:您可以随意传递“状态”指针。
我还想补充一点,我通过将“状态”包装在Arc<Mutex<>>中尝试了相同的Arc<>场景。它会导致示例触发的相同错误之一。我还尝试使用该结构的静态版本,但这会产生它不可变的问题,并且我相信它会引发相同的所有权错误。
我有一种感觉,这很容易解决,但它确实需要一些(高级)Rust 借用机制的经验。我是 Rust 新手(不到一周的爱好经验),我可以掌握很多概念,但我本质上需要避免这里的所有权机制,因为数据必须是全局共享的。
我希望有经验的 Rustacean 知道解决这个问题!提前非常感谢。
c++ - 无法将 imgui 添加到现有场景 OpenGL
我正在尝试添加 imgui 来调试场景,但无论我调用渲染的顺序如何,imgui 总是在后面渲染。如果单独完成,场景和 imgui 渲染效果很好(评论其他)。我尝试禁用深度测试,使用模板功能,每次 imgui 首先呈现。渲染循环是
也用于初始化 ImGui,因为我使用 opengl 4.4 初始化了窗口核心
此代码也位于不同的名称空间中,并生成一个 dll 文件,然后将其链接。
编辑:我得到了错误,它实际上不是我在使用ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
之后glfwSwapBuffers(window);