问题标签 [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++ - 用 C++ 编译 ImGui
在https://github.com/ocornut/imgui上它说:No specific build process is required. You can add the .cpp files to your existing project.
我尝试使用带有相关.cpp
文件的代码块,但是它给了我大约 500+ Undefined Reference to ... errors
。imgui.cpp
存在的第一个开始|1994|undefined reference to `ImGui::InputText(char const*, char*, unsigned long, int, int (*)(ImGuiInputTextCallbackData*), void*)'
。这是我尝试过的以下代码。
我错过了什么?我在网页上找不到任何链接器命令(根据我的经验,“未定义的引用...”通常是缺少链接器选项的结果)
c++ - ImGui 示例代码/基本初始化不起作用(Windows 和 Linux)
我正在尝试设置 ImGui 来制作一些应用程序,但是我无法让它工作。我从 GitHub,https://github.com/ocornut/imgui安装了.h
和文件,并按照说明允许项目编译,它确实如此。但是在 Windows 和 Linux 上(我都试过了),它会吐出一个运行时错误,(停止响应 Windows,分段错误(核心转储)Linux)。这是发布的示例代码,.cpp
my_tool_active
现在这段代码由于and无法编译my_color
,所以我在代码之前添加了这两行ImGui::Begin()
:
所以现在当我编译和运行时,它会ImGui::Begin()
在那个阶段崩溃。我在一个小得多的示例中尝试过它,它只是ImGui::Begin()
andImGui::End()
并在其周围放置了 print 语句,它表明它从未完成执行Begin()
.
c++ - GUI中的全局变量?
我正在使用 C++ 和 SDL2 设计一个即时 gui。当我开始设计我的框架时,我注意到基本上一切都需要渲染器或某种事件或其他相关信息(字体、主题等)。将这些放置为只有 gui 函数可以访问的全局静态对象是否有意义,或者只是继续传递所有内容。
这样可以吗?这可能是标题:
那么这可能是 .cpp 文件:
color-picker - ImU32 上的 ImGui 颜色选择器
ImGui 中的颜色选择器适用于浮点向量。
但是我将颜色数据存储在无符号整数中。
我怎样才能让 ColorPicker3ImU32
改为处理值?
请注意,ImGUI 是即时模式 API,因此它会更改您下面的值,这意味着转换步骤不容易引入。
c++ - 如何与在 SFML-IMGUI 中创建的按钮相关联?
您好,我想用 SFML-IMGUI 创建一些按钮,然后以某种方式与它们相关联,例如更改文本。我怎样才能做到这一点?我没有看到任何 ID 属性。我使用此代码创建按钮。
我在文档中看不到任何示例:/
c++ - 使用 OpenGL 3 和 GLFW 在 Mac 上设置 ImGui
我是OpenGL的新手,对 C++ 也很陌生
我使用Xcode在基于英特尔的 Mac计算机上创建了一个OpenGL项目, 我正在使用以下依赖项:
- GLFW
- GLEW
- 数学的 GLM
我已将OpenGL和GLSL版本设置如下:
- OpenGL 版本:4.1 ATI-4.2.13
- 支持的 GLSL 版本是 4.10
我已经从他们的 GitHub 页面https://github.com/ocornut/imgui下载了 ImGui 的源文件 但是,我正在努力链接库并获得未定义的符号编译器错误。
这是我的存储库的链接:https ://github.com/AybarsAcar/OpenGLScratch
谢谢
c++ - ImGui 多重采样
我使用多重采样将我的场景渲染到 FBO。我用作 ImGui::Image 内容的结果纹理。但是如何禁用 gui 的多重采样?我试过:
但这不起作用。MSAA 实际上在 gui 绘图时启用(文本模糊)。
c++ - 带有 ImGui 和 SDL2 的 OpenGL 渲染器
我正在尝试使用所有 3 个库或诸如此类的东西,但我对示例代码感到很困惑,而且我不能完全遵循文档。这是代码,并在下面解释了我的困惑:
我在这里有一些困惑,首先SDL_Renderer
是代码中没有任何地方。我注意到显示绘制颜色由 OpenGL 处理,但渲染是通过glClear(GL_COLOR_BUFFER_BIT);
(我认为)调用的。不过,我不确定,我如何才能真正调用任何 SDL2 函数,例如SDL_RenderFillRect()
没有 SDL_Renderer ?我最好的提示是这一行:
它的 SDL_GL_SwapWindow() 在哪里,但我相信这也为 OpenGL 渲染?我不太确定所有撕裂中的哪条线实际上做了什么。我的意思是我本来以为ImGui::Render()
会渲染所有 ImGui 的东西,但是有一个ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
然后我不确定SDL_GL_SwapWindow
关系如何,因为我已经调用了glClear()
. 此外,为什么ImGui::EndFrame()
在一帧末尾的示例代码中调用但未调用一个函数,然后ImGui::NewFrame()
每个循环都有一个函数,并且对于ImGui_ImplOpenGL3_NewFrame();
ImGui_ImplSDL2_NewFrame(window);
有人可以解释其中一些非常令人困惑的事情。
three.js - three.js + imgui-js 项目中的场景渲染问题
我有一个项目正在使用Three.js
和imgui-js
. 我正在尝试更新到每个版本的最新版本,但我遇到了问题(它们最后一次更新是在 2020 年 2 月左右)。
要初始化我正在调用的两个库:
然后我将一些对象添加到三个场景中:
并调用如下所示的更新循环:
更新到这些库的最新版本后,我遇到了场景中的对象未按预期呈现的问题。
例如,我将 2 添加GridHelpers
到场景中,但由于某种原因只显示了一个。此外,如果在场景中切换不同对象的可见性Three
,例如关闭/打开其中一个网格的显示,则在切换回对象时不会再次显示(有时其他对象会消失)。
发生的另一个问题是更复杂的网格材质将具有意想不到的透明度,但是对于我在此示例中添加的简单框,该问题似乎不会发生。虽然,根据是否进行ImGui_Impl.RenderDrawData
呼叫,框的外观可能会发生变化,这可能是相关的。
我发现如果我注释掉对 的调用ImGui_Impl.RenderDrawData(ImGui.GetDrawData())
,场景会按预期显示,两个网格助手都会出现,所以我怀疑现在两个库的使用之间可能存在一些内部冲突webGl
。尽管我绝对有可能设置不正确,或者我错过了所需的电话。
为了帮助演示该问题,我创建了一个复制该问题的片段:https ://codepen.io/bpeake/pen/KKNNQre 。
imgui-js
我的or设置有什么问题three-js
吗?关于我可以做什么以使ImGui_Impl.RenderDrawData
调用不会影响我的three.js
场景渲染的任何想法?
c++ - 在 C++ 中的 SDL2 和 OpenGL2 中将 rgb 像素阵列绘制或 blit 到窗口的最快方法
问题:
如何使用 SDL2 和 OpenGL2 尽可能快且高效地将 rgb 像素图像(rgb 结构数组)绘制到显示器上?我尝试映射到 2d 纹理并 blitting SDL_Surface ......我认为 2d 纹理稍微快一些,但它使用了更多的 CPU ......
语境:
我正在用 C++ 制作自己的光线追踪器,并且设置了一些框架,以便我可以实时观看光线追踪的图像。我目前正在将 SDL2 用于窗口,并且通过 OpenGL 将图像映射到 2d 纹理来显示我的渲染图像。我应该提到我正在使用 OpenGL2 进行渲染,因为:
- 我在 WSL
- 我正在使用需要 OpenGL (DearImGUI) 的 GUI 库
我目前的速度约为 55fps,但它使用大量 cpu 来绘制窗口,这是我没想到的。我想知道是否有一种方法可以更快地显示 rgb 像素阵列并减少我的 cpu 上的计算量/压力。我有一个 2 核 (lol) i7-5500U cpu(带集成显卡),我正在使用我的笔记本电脑进行渲染。我猜这可能是我笔记本电脑的极限,因为它没有独立的 gpu 来提供帮助,但最好还是问问。
我也是 OpenGL 的一个完整的初学者,所以我的代码也有可能得到改进,所以我也感谢对我的实现的任何反馈。
方法:
所以我想详细说明我显示实时渲染图像的方式。在伪代码和c++代码方面:
我知道我可以通过 SDL 对屏幕进行 blit,并且我已经尝试过了,但这不适用于 OpenGL。我最终得到了一些粗糙的屏幕撕裂和闪烁。
那么,就速度/效率而言,这是我能做到的最好的吗?