All Projects → JamesBoer → ImFrame

JamesBoer / ImFrame

Licence: MIT license
dear imgui + glfw framework

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to ImFrame

imgui-java
JNI based binding for Dear ImGui
Stars: ✭ 270 (+213.95%)
Mutual labels:  glfw, dear-imgui
RCCpp-DearImGui-GLFW-example
Add Runtime Compiled C++ to the Dear ImGui example using the GLFW and OpenGL backend - with power saving
Stars: ✭ 61 (-29.07%)
Mutual labels:  glfw, dear-imgui
Lighthouse2
Lighthouse 2 framework for real-time ray tracing
Stars: ✭ 542 (+530.23%)
Mutual labels:  glfw
Vxr
General purpose engine written in C++ with emphasis on materials rendering (PBR, clear coat, anisotropy, iridescence)
Stars: ✭ 181 (+110.47%)
Mutual labels:  glfw
Opengl cmake skeleton
❤️ A ready to use cmake skeleton using GLFW, Glew and glm. 👍
Stars: ✭ 118 (+37.21%)
Mutual labels:  glfw
Glfw.jl
Julia interface to GLFW, a multi-platform library for creating windows with OpenGL contexts and managing input and events.
Stars: ✭ 82 (-4.65%)
Mutual labels:  glfw
Pyglfw
Python bindings for GLFW
Stars: ✭ 136 (+58.14%)
Mutual labels:  glfw
Go Flutter
Flutter on Windows, MacOS and Linux - based on Flutter Embedding, Go and GLFW.
Stars: ✭ 5,095 (+5824.42%)
Mutual labels:  glfw
Nimgl
NimGL is a Nim library that offers bindings for popular libraries used in computer graphics
Stars: ✭ 218 (+153.49%)
Mutual labels:  glfw
Futureproof
A live editor for fragment shaders, powered by Neovim, WebGPU, and Zig!
Stars: ✭ 117 (+36.05%)
Mutual labels:  glfw
Flextgl
OpenGL and Vulkan header and loader generator.
Stars: ✭ 180 (+109.3%)
Mutual labels:  glfw
Demos
Vulkan API crossplatform demos in Go
Stars: ✭ 103 (+19.77%)
Mutual labels:  glfw
Bgfx
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
Stars: ✭ 10,252 (+11820.93%)
Mutual labels:  glfw
Bimpy
imgui for python
Stars: ✭ 144 (+67.44%)
Mutual labels:  glfw
Glfw
Go bindings for GLFW 3
Stars: ✭ 1,069 (+1143.02%)
Mutual labels:  glfw
Lwjgl3 Tutorial
Tutorial for the Lightweight Java Game Library (LWJGL) 3
Stars: ✭ 199 (+131.4%)
Mutual labels:  glfw
Silk.net
The high-speed OpenAL, OpenGL, Vulkan, and GLFW bindings library your mother warned you about.
Stars: ✭ 534 (+520.93%)
Mutual labels:  glfw
Physics3d
A 3D physics engine
Stars: ✭ 101 (+17.44%)
Mutual labels:  glfw
Borealis
Hardware accelerated, controller and TV oriented UI library for PC and Nintendo Switch (libnx).
Stars: ✭ 135 (+56.98%)
Mutual labels:  glfw
Berserk
[WIP] High performance 3D graphics game engine
Stars: ✭ 31 (-63.95%)
Mutual labels:  glfw

ImFrame CI

ImFrame is a lightweight framework designed to provide you with a window and graphical backend for the Dear ImGui library. Unlike more traditional GUI frameworks, Dear ImGui is designed to be integrated into existing applications with a real-time graphics rendering loop, like you'd typically find in videogames.

Features

ImFrame provides you with a number of features for typical application development needs:

  • Comprehensive windows management using GLFW
  • Automatic saving and restoring of windows position, size, and state
  • Native file open, file save, and directory selection dialog boxes
  • Application-specific settings storage via platform-appropriate ini file
  • Image loading as an OpenGL texture
  • Multiple embedded fonts to use for ImGui
  • Menu wrappers for ImGui functions that provide native macOS menus

Third Party Libraries

ImFrame integrates a number of handy third-party libraries into a single handy framework. Some of these are hidden behind ImFrame interfaces, while some are provided as-is for your application's use.

  • Dear ImGui is a platform-independent immediate-mode GUI library. It uses the MIT license.
  • GLFW is an OpenGL-based, cross-platform window management and input handling library. It uses the zip/libpng license.
  • glad is an OpenGL loading library. It uses the MIT license.
  • Native File Dialog Extended is a library that invokes native file open, save, and folder select dialog boxes. It uses the zlib license.
  • ImPlot is a comprehensive plotting library extension for Dear ImGui. It uses the MIT license.
  • mINI is an ini file reader / writer. It uses the MIT license.
  • linmath is a header-only C-based linear math library for computer graphics. It uses the WTFPL license.
  • stb_image is a library used for loading images. It uses the MIT license or is public domain.

Getting Started

ImFrame uses CMake, so integration should be straightforward using this build tool. Just add the library to your CMake script, create an application class as required, and you should be off and running. We've provided several example applications that should provide you with enough information to build your own app. For example, the following code in the Minimal example shows off everything you need to do to get an application up and running with just a tiny bit of code:

#include <ImFrame.h>

#ifdef IMFRAME_WINDOWS
#include <SDKDDKVer.h>
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#endif

namespace Minimal
{
  class MainApp : public ImFrame::ImApp
  {
  public:
    MainApp(GLFWwindow * window) : ImFrame::ImApp(window) {}
    virtual ~MainApp() {}
    void OnUpdate() override {}
  };
}

// ImFrame main function and app creation
IMFRAME_MAIN("ImFrame", "Minimal App Demo", Minimal::MainApp)

This application will compile and run on Windows, macOS, and most Linux distros.

Stability

ImFrame is still in early development, so feedback and bug reports are appreciated. At the moment, it should expected that breaking changes may be introduced as new functionality is added, bugs are fixed, and APIs are streamlined.

Screenshots

The following are some screenshots showing the Features demo running on Windows and macOS.

Windows Demo Table Image

Mac Demo Table Image

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].