ocornut / imgui

Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies
MIT License
61.34k stars 10.33k forks source link

Gallery: Post your screenshots / code here (PART 6) #1607

Open ocornut opened 6 years ago

ocornut commented 6 years ago

This is Part 6, I am splitting issues to reduce loading times and avoid github collapsing messages.

Browse all threads and find latest one to post to using the gallery label.

Also see: Software using dear imgui (you can help complete the list!)

You can post your screenshots here!

LAK132 commented 6 years ago

I managed to massage a frame buffer onto the ESP32 and implemented a rasterizer (basically a reworked version of sronsse's sr), so now alpha blending and text works!

a

~~Sadly it takes about 10 seconds to fully render a frame :/ I'll have to see if there's anything I can cut out of ImGui to get it to render faster, seeing as the UI only needs to be super simplistic for this application.~~ Apparently updating GUI is only taking 100ms, it's drawing to the screen that's taking forever aha

ino: https://github.com/LAK132/ImDuino/blob/master/ImDuino.ino rasterizer: https://github.com/LAK132/ImDuino/blob/master/softraster.cpp

ocornut commented 6 years ago

@LAK132 that code sronsse posted is unfortunately way too slow, you’d easily get a x100 boost with more optimised code and taking some of my suggestion in the previous comment. At least make the optimization for axis aligned quads (both textured and non-textured paths) and you can easily ignore most of the generic rasterization code for 95% of those triangles.

Also disabling rounding, disabling alpha for background and specialize code for transparent vs not transparent.

LAK132 commented 6 years ago

Removing Serial got it from 10 to 4 seconds and rewriting tft.drawPixel(x, y, screenBuffer.col[x][y]); in the TFT API allowed me to get it from 4 seconds to 400 milliseconds, I think I have about 200ms I can shave off the rasterizer. Super happy that this works so well :D

ADMIN EDIT We moved this discussion to #1613

ocornut commented 6 years ago

This Terrain Editor https://www.youtube.com/watch?v=rOtFH_WblfM

terrain editor

One nice thing which was suggested in #1117 is that they seem to blur the scene behind the imgui windows.

onqtam commented 6 years ago

rcrl - Read-Compile-Run-Loop: tiny and powerful interactive C++ compiler (REPL)

gif showcase

BrunoLevy commented 6 years ago

Graphite with four shaders from ShaderToy. Shaders can be directly copy-pasted from ShaderToy and edited (using ImGuiColorTextEdit).

fourshadertoys

ocornut commented 6 years ago

(Apologies for the double post, I initially created a new thread for that #1620, but considering how we use those gallery threads for general relaying of cool stuff, this is more appropriate)

JavaScript bindings for Dear ImGui using Emscripten and TypeScript by @flyover Github https://github.com/flyover/imgui-js Readme https://flyover.github.io/imgui-js/

There's a web demo which even supports gamepad. https://flyover.github.io/imgui-js/example/

Interestingly the web demo has a sandbox window when you can input imgui code and it's get evaluated live (it's easy to break the library with mismatch Begin/End pairs at the moment, something which I would like to improve in the future) image

dpethes commented 6 years ago

Glidetrace - 3dfx glide2x api capture and replay tools https://github.com/dpethes/glidetrace glidetrace_tr https://www.youtube.com/watch?v=GKxL8X_Pntg

It uses a glide2x imgui impl. I use glide wrappers at the moment, but it should work on the 20+ year old Voodoo boards just fine (such retro!). The black rectangles around textured stuff (letters, cursor) are there because I haven't figured out the correct color/alpha combiner setup for rendering yet.

ocornut commented 6 years ago

Received from Frontier a sandbox ui using outlined font: physicssandboximgui

"The PhysicsSandbox was our first serious use of imgui. XX replaced the old (very old and primitive) debug UI with it and expanded it considerably.

Of particular note is the text outline, which really helps with reading the text even in difficult situations. We haven't sent this as a patch to you because if I recall correctly, the implementation has a considerable performance impact. It's perfectly fine for our uses though.

Once the game ships I'll try and get you some screenshots of the in-game debug menus, as those are more elaborate."

Will probably want to investigate some of the reasonable ways to use outlines at some point. (Perhaps it could be as simple as pre-processing the RGBA font atlas and retrieving outlined font that cannot be recolored, as opposed to using a more generic solution that allows recoloring but probably incur extra cost on the pixel shader)

meshula commented 6 years ago

FWIW, SDF solutions work very well for font outlining. eg, @Flix01 made this - https://gist.github.com/Flix01/254005101903fe1bc22fe0b9f3ed3931

CallumDev commented 6 years ago

Working on an editor for https://github.com/Librelancer/Librelancer

ocornut commented 6 years ago

Limit Theory http://forums.ltheory.com/viewtopic.php?f=30&t=6459

The amount of details here is particularly interesting:

Will ask them for some details.

xmmbubg

zxmncna

jdlzzeg

dy3oiyr

0yfsgho

codz01 commented 6 years ago

gray theme imgui_gray

   ImVec4* colors = ImGui::GetStyle().Colors;
    ImGui::GetStyle().FramePadding = ImVec2(4.0f,2.0f);
    ImGui::GetStyle().ItemSpacing = ImVec2(8.0f,2.0f);
    ImGui::GetStyle().WindowRounding = 2.0f;
    ImGui::GetStyle().ChildRounding = 2.0f;
    ImGui::GetStyle().FrameRounding = 0.0f;
    ImGui::GetStyle().ScrollbarRounding = 0.0f;
    ImGui::GetStyle().GrabRounding = 1.0f;
    ImGui::GetStyle().WindowBorderSize = 1.0f;
    ImGui::GetStyle().FrameBorderSize = 1.0f;
    colors[ImGuiCol_Text]                   = ImVec4(0.00f, 0.00f, 0.00f, 0.85f);
    colors[ImGuiCol_TextDisabled]           = ImVec4(0.60f, 0.60f, 0.60f, 1.00f);
    colors[ImGuiCol_WindowBg]               = ImVec4(0.94f, 0.94f, 0.94f, 1.00f);
    colors[ImGuiCol_ChildBg]                = ImVec4(0.00f, 0.00f, 0.00f, 0.00f);
    colors[ImGuiCol_PopupBg]                = ImVec4(1.00f, 1.00f, 1.00f, 0.98f);
    colors[ImGuiCol_Border]                 = ImVec4(0.00f, 0.00f, 0.00f, 0.44f);
    colors[ImGuiCol_BorderShadow]           = ImVec4(0.00f, 0.00f, 0.00f, 0.00f);
    colors[ImGuiCol_FrameBg]                = ImVec4(1.00f, 1.00f, 1.00f, 1.00f);
    colors[ImGuiCol_FrameBgHovered]         = ImVec4(0.64f, 0.65f, 0.66f, 0.40f);
    colors[ImGuiCol_FrameBgActive]          = ImVec4(0.64f, 0.65f, 0.66f, 0.40f);
    colors[ImGuiCol_TitleBg]                = ImVec4(0.82f, 0.82f, 0.82f, 1.00f);
    colors[ImGuiCol_TitleBgActive]          = ImVec4(0.71f, 0.70f, 0.70f, 1.00f);
    colors[ImGuiCol_TitleBgCollapsed]       = ImVec4(1.00f, 1.00f, 1.00f, 0.51f);
    colors[ImGuiCol_MenuBarBg]              = ImVec4(0.86f, 0.86f, 0.86f, 1.00f);
    colors[ImGuiCol_ScrollbarBg]            = ImVec4(0.98f, 0.98f, 0.98f, 0.53f);
    colors[ImGuiCol_ScrollbarGrab]          = ImVec4(0.69f, 0.69f, 0.69f, 0.80f);
    colors[ImGuiCol_ScrollbarGrabHovered]   = ImVec4(0.49f, 0.49f, 0.49f, 0.80f);
    colors[ImGuiCol_ScrollbarGrabActive]    = ImVec4(0.49f, 0.49f, 0.49f, 1.00f);
    colors[ImGuiCol_CheckMark]              = ImVec4(0.43f, 0.43f, 0.43f, 1.00f);
    colors[ImGuiCol_SliderGrab]             = ImVec4(0.63f, 0.63f, 0.63f, 0.78f);
    colors[ImGuiCol_SliderGrabActive]       = ImVec4(0.43f, 0.44f, 0.46f, 0.78f);
    colors[ImGuiCol_Button]                 = ImVec4(0.61f, 0.61f, 0.62f, 0.40f);
    colors[ImGuiCol_ButtonHovered]          = ImVec4(0.57f, 0.57f, 0.57f, 0.52f);
    colors[ImGuiCol_ButtonActive]           = ImVec4(0.61f, 0.63f, 0.64f, 1.00f);
    colors[ImGuiCol_Header]                 = ImVec4(0.64f, 0.64f, 0.65f, 0.31f);
    colors[ImGuiCol_HeaderHovered]          = ImVec4(0.58f, 0.58f, 0.59f, 0.55f);
    colors[ImGuiCol_HeaderActive]           = ImVec4(0.52f, 0.52f, 0.52f, 0.55f);
    colors[ImGuiCol_Separator]              = ImVec4(0.56f, 0.56f, 0.56f, 1.00f);
    colors[ImGuiCol_SeparatorHovered]       = ImVec4(0.17f, 0.17f, 0.17f, 0.89f);
    colors[ImGuiCol_SeparatorActive]        = ImVec4(0.17f, 0.17f, 0.17f, 0.89f);
    colors[ImGuiCol_ResizeGrip]             = ImVec4(0.80f, 0.80f, 0.80f, 0.56f);
    colors[ImGuiCol_ResizeGripHovered]      = ImVec4(0.39f, 0.39f, 0.40f, 0.67f);
    colors[ImGuiCol_ResizeGripActive]       = ImVec4(0.39f, 0.39f, 0.40f, 0.67f);
    colors[ImGuiCol_CloseButton]            = ImVec4(0.59f, 0.59f, 0.59f, 0.50f);
    colors[ImGuiCol_CloseButtonHovered]     = ImVec4(0.98f, 0.39f, 0.36f, 1.00f);
    colors[ImGuiCol_CloseButtonActive]      = ImVec4(0.98f, 0.39f, 0.36f, 1.00f);
    colors[ImGuiCol_PlotLines]              = ImVec4(0.39f, 0.39f, 0.39f, 1.00f);
    colors[ImGuiCol_PlotLinesHovered]       = ImVec4(1.00f, 0.43f, 0.35f, 1.00f);
    colors[ImGuiCol_PlotHistogram]          = ImVec4(0.78f, 0.78f, 0.78f, 1.00f);
    colors[ImGuiCol_PlotHistogramHovered]   = ImVec4(0.56f, 0.56f, 0.56f, 1.00f);
    colors[ImGuiCol_TextSelectedBg]         = ImVec4(0.71f, 0.72f, 0.73f, 0.57f);
    colors[ImGuiCol_ModalWindowDarkening]   = ImVec4(0.20f, 0.20f, 0.20f, 0.35f);
    colors[ImGuiCol_DragDropTarget]         = ImVec4(0.16f, 0.16f, 0.17f, 0.95f);
aiekick commented 6 years ago

A soft for generate a mesh from a distance field. the slice path is fully controled by the glsl directly :) but work always in progress at this moment :)

2018-03-23_06-03-23

2018-03-25_17-54-49

ocornut commented 6 years ago

Pushed a small change a few days ago to use a cross in the closing button instead of the infamous circle:

image image

The highlight fill (which is circular to accommodate for rounded windows) is using the button background colors so ImGuiCol_CloseButton, ImGuiCol_CloseButtonActive, ImGuiCol_CloseButtonHovered have been completely removed (this is a breaking change), as part of simplifying styles.

ocornut commented 6 years ago

Some shots from the tooling used by @citruslee for their demos: Rise and Shine http://www.pouet.net/prod.php?which=68178 Solitude http://www.pouet.net/prod.php?which=69740 Terabyte http://www.pouet.net/prod.php?which=67145

minerva-04 minerva-05

BrunoLevy commented 6 years ago

Graphite with several GUI styles (dark and light, fixed layout and floating windows)

graphite_gui_styles

graphite_legacy_black

JSandusky commented 6 years ago

Bitfield checkbox matrix:

image

Code: https://gist.github.com/JSandusky/af0e94011aee31f7b05ed2257d347637

Uses a bool BitField(const char* label, unsigned* bits, unsigned* hoveredBitIndex); signature. Hovered bit index is useful for tooltip to show names (ie. user defined flags).

ocornut commented 6 years ago

This video from Airbus https://www.youtube.com/watch?v=Te3qptOwTK4 Shows a VR project ("VR dragonfly"?) using dear imgui at the 20 seconds mark: airbus vr thing

ImOnALampshade commented 6 years ago

Wanted to share mine: I have Electron rendering to an OpenGL texture, which I am displaying in ImGui.

image

hsimpson commented 6 years ago

clparticles OpenCL calculated particles, rendered with OpenGL. Video: https://youtu.be/VTs5xOGDT5w Repo: https://github.com/hsimpson/clparticles

Screenshot of clparticles

ocornut commented 6 years ago

Panorama "simple Linux system monitor" https://github.com/ronen25/panorama panorama 2 Interesting to see somehow desktop-looking apps popping here and there.

ocornut commented 6 years ago

From Harfang3D (https://www.harfang3d.com) harfang-201805

darkgnostic commented 6 years ago

Dungeons of Everchange HD

http://www.darkgnosis.com/game/dungeons-of-everchange-hd/

Using ImGui mostly as debug part of game, with some exclusions as popup texts.

game_debug

And particle editor for the game, using some custom controls (tab & graph):

particle_editor

which can produce these kind of effects:

20171004 allin1

MrFrenik commented 6 years ago

progress_shot_04_03_2018

Shot of the editor for my engine using ImGui. Dev Log here ( for anyone interested ): https://www.youtube.com/watch?v=fHUdVhmsi6s&t=855s

ocornut commented 6 years ago

Nodable by @berdal84 https://github.com/berdal84/Nodable https://www.youtube.com/watch?v=1TWPsUd66XY This software is a command line prompt able to evaluate literal expressions by constructing an execution tree in realtime. When user type an expression the program split it into tokens and build the execution tree. image

Alzathar commented 6 years ago

Qt3D-Studio 2.0 beta seems to use ImGui for the debugging and profiling. Update: Yes it is, since this commit.

Qt3DStudio_Viewer_profiling.png

ocornut commented 6 years ago

Spotted during Electronic Arts conference at E3, during the Unravel Two presentation: unravel-01

aang7 commented 6 years ago

Not so cool like many of the projects posted here. But uses ImGui.
Controlling an OpenCV Mat using ImGui. output

pixsample

LAK132 commented 6 years ago

In a video that is currently 9th on YouTube trending!

screenshot

The program if anyone is interested: https://github.com/LAK132/SourceExplorer

berdal84 commented 6 years ago

Nodable by @berdal84 https://github.com/berdal84/Nodable Nodable is a node-able bidirectionnal editor (Text-to-Graph and Graph-to-Text). 2018_06_12_animation @ocornut sorry for the double post, maybe could you merge it with your previous one ?

Nukem9 commented 6 years ago

Spotted in Fallout76 - "The Making of Fallout 76 - Noclip Documentary"

image

mneumann commented 6 years ago

I have used imgui-rs (the Rust interface) in HyperNSGA, which was part of my diploma thesis to visualize the evolutionary development and optimization of spiking neural networks (using compositional pattern producing networks and NSGA) and to interact in realtime with the optimization process:

Imgui

fallrisk commented 6 years ago

A dark and purple theme.

https://github.com/fallrisk/purpur-fetthenne-theme

screenshot_20180622_141505

  colors[ImGuiCol_Text]                   = ImVec4(1.00f, 1.00f, 1.00f, 1.00f);
  colors[ImGuiCol_TextDisabled]           = ImVec4(0.50f, 0.50f, 0.50f, 1.00f);
  colors[ImGuiCol_WindowBg]               = ImVec4(0.27f, 0.27f, 0.28f, 1.00f);
  colors[ImGuiCol_ChildBg]                = ImVec4(0.27f, 0.27f, 0.28f, 1.00f);
  colors[ImGuiCol_PopupBg]                = ImVec4(0.08f, 0.08f, 0.08f, 1.00f);
  colors[ImGuiCol_Border]                 = ImVec4(0.27f, 0.27f, 0.28f, 1.00f);
  colors[ImGuiCol_BorderShadow]           = ImVec4(0.00f, 0.00f, 0.00f, 0.00f);
  colors[ImGuiCol_FrameBg]                = ImVec4(0.18f, 0.18f, 0.19f, 1.00f);
  colors[ImGuiCol_FrameBgHovered]         = ImVec4(0.61f, 0.35f, 0.71f, 1.00f);
  colors[ImGuiCol_FrameBgActive]          = ImVec4(0.61f, 0.35f, 0.71f, 1.00f);
  colors[ImGuiCol_TitleBg]                = ImVec4(0.27f, 0.27f, 0.28f, 1.00f);
  colors[ImGuiCol_TitleBgActive]          = ImVec4(0.27f, 0.27f, 0.28f, 1.00f);
  colors[ImGuiCol_TitleBgCollapsed]       = ImVec4(0.27f, 0.27f, 0.28f, 1.00f);
  colors[ImGuiCol_MenuBarBg]              = ImVec4(0.27f, 0.27f, 0.28f, 1.00f);
  colors[ImGuiCol_ScrollbarBg]            = ImVec4(0.27f, 0.27f, 0.28f, 1.00f);
  colors[ImGuiCol_ScrollbarGrab]          = ImVec4(0.13f, 0.13f, 0.13f, 1.00f);
  colors[ImGuiCol_ScrollbarGrabHovered]   = ImVec4(0.36f, 0.38f, 0.39f, 1.00f);
  colors[ImGuiCol_ScrollbarGrabActive]    = ImVec4(0.36f, 0.38f, 0.39f, 1.00f);
  colors[ImGuiCol_CheckMark]              = ImVec4(0.56f, 0.27f, 0.68f, 1.00f);
  colors[ImGuiCol_SliderGrab]             = ImVec4(0.56f, 0.27f, 0.68f, 1.00f);
  colors[ImGuiCol_SliderGrabActive]       = ImVec4(0.56f, 0.27f, 0.68f, 1.00f);
  colors[ImGuiCol_Button]                 = ImVec4(0.36f, 0.38f, 0.39f, 1.00f);
  colors[ImGuiCol_ButtonHovered]          = ImVec4(0.61f, 0.35f, 0.71f, 1.00f);
  colors[ImGuiCol_ButtonActive]           = ImVec4(0.56f, 0.27f, 0.68f, 1.00f);
  colors[ImGuiCol_Header]                 = ImVec4(0.27f, 0.27f, 0.28f, 1.00f);
  colors[ImGuiCol_HeaderHovered]          = ImVec4(0.27f, 0.27f, 0.28f, 1.00f);
  colors[ImGuiCol_HeaderActive]           = ImVec4(0.27f, 0.27f, 0.28f, 1.00f);
  colors[ImGuiCol_Separator]              = ImVec4(0.43f, 0.43f, 0.50f, 0.50f);
  colors[ImGuiCol_SeparatorHovered]       = ImVec4(0.61f, 0.35f, 0.71f, 1.00f);
  colors[ImGuiCol_SeparatorActive]        = ImVec4(0.56f, 0.27f, 0.68f, 1.00f);
  colors[ImGuiCol_ResizeGrip]             = ImVec4(0.36f, 0.38f, 0.39f, 1.00f);
  colors[ImGuiCol_ResizeGripHovered]      = ImVec4(0.61f, 0.35f, 0.71f, 1.00f);
  colors[ImGuiCol_ResizeGripActive]       = ImVec4(0.56f, 0.27f, 0.68f, 1.00f);
  colors[ImGuiCol_PlotLines]              = ImVec4(0.61f, 0.61f, 0.61f, 1.00f);
  colors[ImGuiCol_PlotLinesHovered]       = ImVec4(0.60f, 0.36f, 0.76f, 0.40f);
  colors[ImGuiCol_PlotHistogram]          = ImVec4(0.61f, 0.35f, 0.71f, 1.00f);
  colors[ImGuiCol_PlotHistogramHovered]   = ImVec4(0.56f, 0.27f, 0.68f, 1.00f);
  colors[ImGuiCol_TextSelectedBg]         = ImVec4(0.26f, 0.59f, 0.98f, 0.35f);
  colors[ImGuiCol_ModalWindowDarkening]   = ImVec4(0.80f, 0.80f, 0.80f, 0.35f);
  colors[ImGuiCol_DragDropTarget]         = ImVec4(1.00f, 1.00f, 0.00f, 0.90f);
  colors[ImGuiCol_NavHighlight]           = ImVec4(0.26f, 0.59f, 0.98f, 1.00f);
  colors[ImGuiCol_NavWindowingHighlight]  = ImVec4(1.00f, 1.00f, 1.00f, 0.70f);

  ImGuiStyle& style = ImGui::GetStyle();

  style.FrameRounding = 3;
BrunoLevy commented 6 years ago

ImGui in outer space ! Early Universe Reconstruction (coop. with Paris Institute of Astrophysics and Paris Observatory).

Visualized with Graphite Download (Linux/Mac/Windows sources, windows executable): https://gforge.inria.fr/frs/?group_id=1465 Documentation: http://alice.loria.fr/software/graphite/doc/html/

eur_imgui

ocornut commented 6 years ago

A CPU/GPU profiler called Tracy Video: https://www.youtube.com/watch?v=fB5B46lbapc Sources: https://bitbucket.org/wolfpld/tracy/src/master/

tracy

From a technical talk about the Vulkan port of Rise of the Tomb Raider https://youtu.be/ptakmFGcIRU?t=638 rise of the tomb raider

A technical blog post for the game iRacing (about damage and collision systems) https://www.iracing.com/road-new-damage/ iracing

Directus3d Engine https://github.com/PanosK92/Directus3D directus3d screenshot-v0 3_preview3

A node editor (can't remember where I found/got this one, but it was from a public source) dejchjfw4aehdap jpg orig

ocornut commented 6 years ago

This is Part 6. Locking this now. Moving to Part 7. Screenshots Part 1 #123 Screenshots Part 2 #539 Screenshots Part 3 #772 Screenshots Part 4 #973 Screenshots Part 5 #1269 Screenshots Part 6 #1607 Screenshots Part 7 #1902 Screenshots Part 8 #2265 Also see: Software using dear imgui (you can help complete the list!)

al-sabr commented 5 years ago

Wanted to share mine: I have Electron rendering to an OpenGL texture, which I am displaying in ImGui.

image

How did you achieve this ?

ImOnALampshade commented 5 years ago

Separate electron process rendering offscreen into shared memory (see my profile for a node module for the shared memory), which I use to update an OpenGL texture. Displayed in Imgur through an Image button (so that mouse drag events don’t get eaten by Imgui). Input is forwarded through a network socket.

I actually switched to Ultralight, which is a more purpose built implementation. Electron is pretty heavy and bulky, and is notorious for using lots of system resources. Ultralight has been a lot better at that, but has its own issues (like no HTML5 video, there’s some issues I’ve had with scrollable divs, and a few random crashes on windows). It is still very much in beta and it’s been a while since the last update, but it does seem to be actively maintained if a bit slowly.

I want to make this project open source, but Ultralights is proprietary and kind of prevents that, since anyone who would want to use my implementation would have to pay for a license. I’m probably going to switch again to an OSS renderer like Gecko (Firefox) or using WebKit directly (which ultralight is a wrapper around)

On Wed, Mar 13, 2019 at 12:26 PM gdeverlant notifications@github.com wrote:

Wanted to share mine: I have Electron rendering to an OpenGL texture, which I am displaying in ImGui.

[image: image] https://user-images.githubusercontent.com/7727197/38189147-9c5ae4a0-3613-11e8-89f5-beabdea5d64c.png

How did you achieve this ?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/ocornut/imgui/issues/1607#issuecomment-472570362, or mute the thread https://github.com/notifications/unsubscribe-auth/AHXoXUkec989EMT5LLB891Qmsg-whoBrks5vWVD4gaJpZM4SA551 .

Alzathar commented 5 years ago

@ImOnALampshade What about the possibility to use [CEF|(https://bitbucket.org/chromiumembedded/cef)? There is a recent example using CEF and Ogre3D here. There was also an attempt using ImGui as reported in the issue #1140.

Do you think this could replace Ultralight?

ImOnALampshade commented 5 years ago

Yeah I definitely do, and I'd like for it to replace ultralight. Unfortunately I don't have the time to use something like that for my purposes, but I would like to. Ultralight is just very easy to integrate, so I'd recommend it for beginners / people without a lot of time, even if it has to be paid for in commercial settings. On Wed, Mar 13, 2019 at 7:06 PM Alzathar notifications@github.com wrote:

@ImOnALampshade https://github.com/ImOnALampshade What about the possibility to use [CEF|(https://bitbucket.org/chromiumembedded/cef)? There is a recent example using CEF and Ogre3D here https://github.com/kenkit/cef_osr. There was also an attempt using ImGui as reported in the issue #1140 https://github.com/ocornut/imgui/issues/1140.

Do you think this could replace Ultralight?

— You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub https://github.com/ocornut/imgui/issues/1607#issuecomment-472675646, or mute the thread https://github.com/notifications/unsubscribe-auth/AHXoXTeKXMAT0r-6fQvAO2taRMTKZSNwks5vWa6SgaJpZM4SA551 .

al-sabr commented 5 years ago

Separate electron process rendering offscreen into shared memory (see my profile for a node module for the shared memory), which I use to update an OpenGL texture. Displayed in Imgur through an Image button (so that mouse drag events don’t get eaten by Imgui). Input is forwarded through a network socket. I actually switched to Ultralight, which is a more purpose built implementation. Electron is pretty heavy and bulky, and is notorious for using lots of system resources. Ultralight has been a lot better at that, but has its own issues (like no HTML5 video, there’s some issues I’ve had with scrollable divs, and a few random crashes on windows). It is still very much in beta and it’s been a while since the last update, but it does seem to be actively maintained if a bit slowly. I want to make this project open source, but Ultralights is proprietary and kind of prevents that, since anyone who would want to use my implementation would have to pay for a license. I’m probably going to switch again to an OSS renderer like Gecko (Firefox) or using WebKit directly (which ultralight is a wrapper around) On Wed, Mar 13, 2019 at 12:26 PM gdeverlant @.***> wrote: Wanted to share mine: I have Electron rendering to an OpenGL texture, which I am displaying in ImGui. [image: image] https://user-images.githubusercontent.com/7727197/38189147-9c5ae4a0-3613-11e8-89f5-beabdea5d64c.png How did you achieve this ? — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#1607 (comment)>, or mute the thread https://github.com/notifications/unsubscribe-auth/AHXoXUkec989EMT5LLB891Qmsg-whoBrks5vWVD4gaJpZM4SA551 .

Dude that is unbelievable, yesterday I was talking with the author of Ultralight and I didn't ask him if it was possible to use Ultralight instead of Chrome inside of imgui. Like magic you come today saying that you used it instead. Can you enlighten us about you achieved Ultralight?

This would be really appreciated. Great work !

ImOnALampshade commented 5 years ago

@gdeverlant can you clarify what you're asking? Ultralight provides a driver for directly rendering to an OpenGL texture, which is exactly what I am using to do it. I take that OpenGL texture and display it in ImGui as I described above - using ImGui::ImageButton

al-sabr commented 5 years ago

@gdeverlant can you clarify what you're asking? Ultralight provides a driver for directly rendering to an OpenGL texture, which is exactly what I am using to do it. I take that OpenGL texture and display it in ImGui as I described above - using ImGui::ImageButton

I was asking how did you successfully used Ultralight with imgui. If you have any basic code to share this would really help me. I was wondering is it possible with with Ultralight inside of imgui to load a PPAPI plugin inside like on this web site https://electronjs.org/docs/tutorial/using-pepper-flash-plugin.

I wanted to use Chrome but that is too heavy.

ImOnALampshade commented 5 years ago

@gdeverlant I wish I could share the code but it's scattered all over my project's repository. I'm planning to open source the project later but I really don't want to while Ultralight is inside of it. I need to remove the ultralight code and put it in its own repository and load it in as a plugin to my engine, but right now I don't have plugin support so I can't do that. Open sourcing with ultralight in the engine might give people the wrong idea and cause legal issues, since Ultralight itself is closed source and not free to use.

al-sabr commented 5 years ago

@gdeverlant I wish I could share the code but it's scattered all over my project's repository. I'm planning to open source the project later but I really don't want to while Ultralight is inside of it. I need to remove the ultralight code and put it in its own repository and load it in as a plugin to my engine, but right now I don't have plugin support so I can't do that. Open sourcing with ultralight in the engine might give people the wrong idea and cause legal issues, since Ultralight itself is closed source and not free to use.

How about Chrome Embeded Framework which is a stripped down version of Chrome? Is that lightweight enough?

ImOnALampshade commented 5 years ago

@gdeverlant Lightweight enough for what?

al-sabr commented 5 years ago

@gdeverlant Lightweight enough for what?

To use it for displaying HTML pages inside of imgui and probably load plugins like Flash.

Alzathar commented 5 years ago

@gdeverlant Youtube might help you to answer your question:

al-sabr commented 5 years ago

@gdeverlant Youtube might help you to answer your question:

I was more thinking not inside of 3D engine but more in imgui. The 2 major features I need to implement is to be able to render HTML page and play video in imgui. I never worked with 3D engines nor with imgui but I have a good understanding of C++. What would be the best option for me in a short while.