hello_imgui icon indicating copy to clipboard operation
hello_imgui copied to clipboard

Like it or not? Feedback welcome here

Open pthom opened this issue 5 years ago • 17 comments

Constructive feedback is always welcome!

pthom avatar Jun 22 '20 22:06 pthom

Nice work! Would be nice to have the ImGui Metal backend enabled as well.

meshula avatar Jun 24 '20 18:06 meshula

Nice work! Would be nice to have the ImGui Metal backend enabled as well.

Thanks! I will have a look at metal. It's a bit complex, since it requires additional tweaking for the storyboards.

However the doc in imgui_impl_osx.h inside ImGui repo advises to prefer SDL or GLFW on Mac.

pthom avatar Jun 28 '20 17:06 pthom

That statement in the comment is very true ~ Metal isn't portable but OpenGL is. Sadly Apple's deprecation of OpenGL makes the imgui_impl_osx.h advice not so great as time goes on!

Anyway, thanks again for putting your project together!

meshula avatar Jun 29 '20 19:06 meshula

Another demo with Hello ImGui, showcasing implot is available here image

The source code for the demo is at: https://github.com/pthom/implot_demo

It was introduced in this issue

pthom avatar Jun 29 '20 23:06 pthom

Very nice work for rapid C++ GUI developments. I think a Vulkan backend can be useful since it can run on all platforms including the macOS with MoltenVK.

chengts95 avatar Jul 04 '20 01:07 chengts95

Very nice work for rapid C++ GUI developments. I think a Vulkan backend can be useful since it can run on all platforms including the macOS with MoltenVK.

Thanks! Concerning Vulkan, I do not have experience on this framework. I know it is quite more complex than OpenGL. Let's hope someone helps on this in the future!

pthom avatar Jul 04 '20 08:07 pthom

Dear Imgui is a beautiful piece of code that deserves much more love than it gets, it's mature and poised to become the backbone of a modern, liberally licensed, general application framework. You've done a great job with the cross platform scaffolding and I'm curious if you plan to add any other components like notifications, screen rotation, camera access, or audio. I know that any framework can become a bottomless pit and each project has to draw the line somewhere. I'm curious about your thoughts...

frink avatar Aug 21 '20 18:08 frink

You've done a great job with the cross platform scaffolding and I'm curious if you plan to add any other components like notifications, screen rotation, camera access, or audio. I know that any framework can become a bottomless pit and each project has to draw the line somewhere. I'm curious about your thoughts...

Many thanks (and sorry for the delay, I was on holiday)! My original intent when working on this project was to provide a jump start framework for rapid prototyping of research and computer vision applications, especially on mobile platforms.

So let me answer straight. I would like to add the following features to the project:

  • Camera and accelerometer / gyro access on mobile platforms
  • Keyboard access and triggering on mobile platforms

Notifications, Audio & screen rotation are not on my main list at the moment (but I welcome PR in that direction).

pthom avatar Sep 01 '20 09:09 pthom

Great thanks. I'm looking at this as a rapid prototype framework as well. (My use case is cross platform audio applications...)

Having thought about this for a while, I think audio should remain separate to to keep it lean and allow more choice... (MiniAudio and SoLoud are probably the best paring - both MIT/Zlib license)

If you're going to do gyro access then screen rotation is probably trivial once you get there. The resizability on web targets already proves that resizing should not be difficult. I imagine we'll see a Gist on this before this thing is overly mature.

frink avatar Sep 02 '20 14:09 frink

I actually think the same about camera and gyro access: a separate repo is a better idea. I think I will create an external project that would allow camera and gyro access, and that will use this project as a submodule.

pthom avatar Sep 03 '20 18:09 pthom

BTW: I notice the Sokol Dear Imgui Demo produce WASM binaries are a magnitude smaller... (523kb vs 1.4Mb) My guess is that's because of SDL is heavy compared to Sokol. But that's about a 3-4 seconds savings in startup which is very a big deal on the web...

frink avatar Sep 03 '20 21:09 frink

When comparing this GUI framework to QT and wxWidgets a few thoughts come to mind: Hello ImGui is more portable, less bloated and more powerful than any of those options. This project is now my go-to answer when beginners ask me how to create a "hello world" graphical project in C++. At the same time, this project is my go-to solution when I need to create a professional realtime visualization software for an electronics instruments company. Being able to set up a C++ GUI project with 6 lines of code is something that has never existed before, an innovation. To put this into perspective: QT charges a minimum of $302 per developer per month, whereas this library is MIT and is totally better than QT. With this library I can use the IDE of my choice, and it doesn't take over my code. QT is so evil, wxWidgets is a hassle to set up and it's so bloated and buggy. This project is now only professionally executed with documentation and everything, but is also totally called for and necessary in this day and age of web taking over everything.

BigBIueWhale avatar Feb 26 '23 19:02 BigBIueWhale

Maybe we can do something with Imgui File Dialog? like reading a file that has file content "Hello World" and printing it into the imgui window.

JunedKhan101 avatar Jul 10 '23 16:07 JunedKhan101

@JunedKhan101 : Hello ImGui does not include ImGui file dialog. However Dear ImGui Bundle which is based on it provides it, as well as many widgets. You might want to take look at it.

pthom avatar Jul 10 '23 16:07 pthom

I needed to make a quick GUI to inspect some of my research results and this (bundled with Dear ImGui Bundle), made my life so much easier. Two things that would make it even better for me:

  • To load assets from memory as I already generate data in the appropriate data format, I just don't want to deal with the texture IDs myself
  • The option to use nearest neighbour interpolation and not just linear interpolation with textures. But anyway, this project saved me so much time already and these are just minor qualms, overall I love it.

andriii25 avatar Aug 09 '23 14:08 andriii25

I've been playing with hello_imgui. I really like the ambition of this project. To provide feedback; I had a hard time mixing it with the workflow of Dear ImGui. Dear ImGui is programmed in C++ but has a more C-like no-nosense API. Hello ImGui has a very C++/OO API which feels very alien when compared to Dear ImGui. So although it's handy to jumpstart when I need more specifics I tempt to move back to the Dear ImGui examples and work from there then to jump into the abstractions of Hello ImGui. I would have liked the Hello ImGui to follow the same paradigm as Dear imGui because I think that's where the strength is. But that's just my 2 cents.

sphaero avatar Apr 03 '24 09:04 sphaero

I've been playing with hello_imgui. I really like the ambition of this project.

Hello, and thank you for your feedback!

Hello ImGui has a very C++/OO API which feels very alien when compared to Dear ImGui. So although it's handy to jumpstart when I need more specifics I tempt to move back to the Dear ImGui examples and work from there then to jump into the abstractions of Hello ImGui. I would have liked the Hello ImGui to follow the same paradigm as Dear imGui because I think that's where the strength is. But that's just my 2 cents.

I can understand your point. However, I would not say that Hello ImGui uses an object oriented API: all the parameters you see in the API are just Plain Old Data structs, with no methods and no inheritance whatsoever.

The difference from Dear ImGui is that RunnerCallbacks uses C++ function pointers instead of C function pointers. This is to address the standard shortcomings of C functions pointers (where no context can be passed, except may be with a void* pointer, which I really wanted to avoid).

pthom avatar Apr 08 '24 06:04 pthom