(64 bit)Cross Platform GUI with OpenGL Support?

Started by
4 comments, last by ocornut 8 years, 4 months ago

Hi there. I've been pounding my head against the wall with this one. I've tried wxWidgets, couldn't get to compile. I tried GTK+, couldn't find meaningful directions and therefore couldn't get it to compile. I tried Qt, and that's the only one I managed to get to actually work, but couldn't get it to integrate with OpenGL because of an odd lack of information.

Basically, all I'm trying to do is find a library that can be compiled or is already compiled for 64 bit usage of MinGW-w64. I want to then use the library to create an OpenGL viewport that's embedded in the application, but is still able to have things like buttons, labels, and the like.

I want something cross platform so that I could also do this on Linux, but I'm on WIndows for now.

Does anybody know of a good solid library that works in a 64 bit environment? Perhaps one that's already pre-compiled? I wanted to use Code::Blocks and GitHub for a project to make it easier for cross platform development, so I could develop no matter which OS I'm on and develop in either 64 bit or 32 bit.

Advertisement

Hi!

All you need is to use QOpenGLWidget.

Hey, if your willing to use an immediate mode GUI there would be zahnrad and the better known imgui which fit your description.

Spirrwell, you'd need to clarify who would be the user of your tools.

Paying average end-user? Content creator? Mostly team members? Yourself?

Do you want to develop faster (and may I say create more tools?) or do you want to have something that's conform to standards?

(Disclaimer: I am the author of that ImGui library)

The IMGUI based solutions linked above are a great choice in many situation.

Pro

- it feels simple

- really fast and convenient to work with, that's the big point that trumps everything for me

- hassle less in term of building, dependencies, portability

- actually portable (e.g. ImGui compiles and works on everything, whereas QT wouldn't work on a console for example).

Cons

- you don't have standard widgets

- it may be lacking in features or feel clunky sometimes.

In my experience things like QT are very tedious. They are more "correct" but with the tediousness we make more mistakes with it and we don't tend to implement as many tools.

That's the sort of things that (biased) ImGui users are saying:

https://twitter.com/dougbinks/status/669843664303235072

https://github.com/ocornut/imgui/issues/259#issuecomment-119003649

https://github.com/ocornut/imgui/issues/123#issuecomment-142700775

https://twitter.com/xewlupus/status/668557081486594048

Not saying it is perfect, it has its share of issues, but if it clicks for you and your coding style (some people have sort of a mental block with making simple things and some of the patterns that ImGui encourage you to use), it can probably feels simple and liberating..

QT is amazing for making cross platform game editors (which seems to be similar to what you are wanting to do?). I use it all the time, mind you I have not moved to QT5 yet, still in QT4. QT is a very refined GUI library and is very portable, well worth the time to learn it.

*EDIT*

After ocornut's post, I feel like I should probably explain more why my preference is for QT. I imagine it is a bit subjective so it's probably worth saying I've been using QT since 2010, and these are my experiences:

  1. If you are developing for Windows, Linux and OSX, it works with minimal effort.
  2. It is a mature and very stable GUI library with many years of development behind it.
  3. A massive amount of documentation readily available both on-line and with the downloadable SDK.
  4. Many working examples that ship with the SDK.
  5. It appears to have a very large user bases.
  6. Support advanced concepts like Model-View-Controllers, asynchronous jobs, etc.
  7. Have a lot of common classes like QSettings for loading / storing application settings, Image Manipulation, CSS like style sheets, XML, OpenGL, SQL, Unit Testing , etc.
  8. The QT Creator IDE runs on WIndows, Linux and OSX and is surprisingly good. I have completely moved away from VS, Vim, etc and now just QT Creator for all my C/C++ needs.
  9. Integrates well with build systems like CMake.
  10. Very nice GUI build that ships with QT Creator and it is very easy to create custom widgets.

Points above also very valid. There's not a single answer because it depends so much on your overall architecture and development. With QT you will tend to build more offline tools (game/engine may be running but you probably have tool development isolated from the rest, manipulating your data through some sort of abstraction layer. Essentially as you depend on all those features that QT gives you, your tools gets more and more isolated from your runtime, unless your game isn't targeting consoles - note that some see this property as a benefit), whereas an integrated ui like imgui will enable you to build more online (in-game, in-engine, touching your raw structures directly) tools with a more blurry separation between game and tools. There's uses for both and there's ways to make games that are 100% on either side or 80/20 or 50/50. I know that I've always wanted to build extremely live and dynamic tools and I've moved away from the likes of GTK/QT a while ago now because they got in my way. But people have different styles and it works for them very well too.

This topic is closed to new replies.

Advertisement