ocornut / imgui

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

Gallery: Post your screenshots / code here (PART 2) #539

Open ocornut opened 8 years ago

ocornut commented 8 years ago

This is Part 2, 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!

atom0s commented 8 years ago

Direct3D8 Example

ImGui working in Direct3D8 (for an old project of mine). (Thanks to a friend of mine for helping with the clipping in d3d8.)

Low framerate due to being on my laptop.

citruslee commented 8 years ago

@atom0s do you have some tutorials on directx 8 and below? I'd like to try programming in that :)

ongamex commented 8 years ago

@citruslee It's exactly the same as D3D9 but without the Programming pipeline stuff. D3D8 header could be found in D3D SDK Jun 2010..

However this is the place of disscussion like that...

atom0s commented 8 years ago

@citruslee Direct3D8 is very similar with Direct3D9 with some features missing. The main one that makes this a little rough being clipping / scissor rects. That has to be manually done via the projection matrix and view port.

The last SDK to include the Direct3D8 content was June 2010. The original Direct3D8 SDK file names are: dx80_sdk.exe DX81SDK_FULL.exe if you are looking for those via Google. (These have all the examples that are done in Direct3D8 etc.)

freanux commented 8 years ago

voxel_editor

working on a voxel editor.

v71 commented 8 years ago

Using imgui as a editing gui for my engine

screenhunter_16 jun 16 23 25

atom0s commented 8 years ago

Ported most of the ImGui API to Lua for a project of mine, an injected hook with plugins and addons. (Plugins are C/C++ DLLs, addons are Lua based)

A starting port of the ImGui demo application to Lua in my addon system: https://gist.github.com/atom0s/188283e6ff097f37fa31400f22ec8762

addon

Project is an injected hook into Final Fantasy XI (MMORPG) using Direct3D 8.

Edit:

7.01.2016 : Updated the above gist with newer .lua file. About 80% of the demo app is ported to Lua now.

njh0602 commented 8 years ago

I am making a 2d top view shooter game with Cocos2d-x. And this program can create game data such as position, type, tiling data, triggers. so it can help to make various game modes(like starcraft usemap editor).

Thanks to the convenience of ImGui, I was writing only a few algorithms(auto tiling, generate collision lines).

2016-07-07 9 14 57

it is ported on Cocos2d-x game engine, so it can live test likes Unity3D. (I developed game on cocos2d-x so i tried.)

Good Luck!

ocornut commented 8 years ago

This nice series of article where Ben Garney goes on writing a video chat system has been going around lately. His tech demo uses imgui: https://bengarney.com/2016/06/25/video-conference-part-1-these-things-suck/ overallapp

olekristensen commented 8 years ago

I'm working on building prototypes for research into aesthetics of dynamic lighting controls. The nodes are bluetooth based and are coordinated by an openFrameworks app. The default ofGui is hard to prettify, so ofxImgui by @jvcleave to the rescue. I wrote a few utility functions to integrate into the openFrameworks ofParameter class and it's all good.

openframeworks with imgui

WIP and messy project is here: https://github.com/olekristensen/ledSynthMaster

v71 commented 8 years ago

Your theme is very nice, do you mind sharing ? what kind of font did you use ?

olekristensen commented 8 years ago

@v71 the formidable OpenSans


ImGuiIO& io = ImGui::GetIO();

io.Fonts->Clear();
io.Fonts->AddFontFromFileTTF(ofToDataPath("fonts/OpenSans-Light.ttf", true).c_str(), 16);
io.Fonts->AddFontFromFileTTF(ofToDataPath("fonts/OpenSans-Regular.ttf", true).c_str(), 16);
io.Fonts->AddFontFromFileTTF(ofToDataPath("fonts/OpenSans-Light.ttf", true).c_str(), 32);
io.Fonts->AddFontFromFileTTF(ofToDataPath("fonts/OpenSans-Regular.ttf", true).c_str(), 11);
io.Fonts->AddFontFromFileTTF(ofToDataPath("fonts/OpenSans-Bold.ttf", true).c_str(), 11);
io.Fonts->Build();

ImGuiStyle * style = &ImGui::GetStyle();

style->WindowPadding            = ImVec2(15, 15);
style->WindowRounding           = 5.0f;
style->FramePadding             = ImVec2(5, 5);
style->FrameRounding            = 4.0f;
style->ItemSpacing              = ImVec2(12, 8);
style->ItemInnerSpacing         = ImVec2(8, 6);
style->IndentSpacing            = 25.0f;
style->ScrollbarSize            = 15.0f;
style->ScrollbarRounding        = 9.0f;
style->GrabMinSize              = 5.0f;
style->GrabRounding             = 3.0f;

style->Colors[ImGuiCol_Text]                  = ImVec4(0.40f, 0.39f, 0.38f, 1.00f);
style->Colors[ImGuiCol_TextDisabled]          = ImVec4(0.40f, 0.39f, 0.38f, 0.77f);
style->Colors[ImGuiCol_WindowBg]              = ImVec4(0.92f, 0.91f, 0.88f, 0.70f);
style->Colors[ImGuiCol_ChildWindowBg]         = ImVec4(1.00f, 0.98f, 0.95f, 0.58f);
style->Colors[ImGuiCol_PopupBg]               = ImVec4(0.92f, 0.91f, 0.88f, 0.92f);
style->Colors[ImGuiCol_Border]                = ImVec4(0.84f, 0.83f, 0.80f, 0.65f);
style->Colors[ImGuiCol_BorderShadow]          = ImVec4(0.92f, 0.91f, 0.88f, 0.00f);
style->Colors[ImGuiCol_FrameBg]               = ImVec4(1.00f, 0.98f, 0.95f, 1.00f);
style->Colors[ImGuiCol_FrameBgHovered]        = ImVec4(0.99f, 1.00f, 0.40f, 0.78f);
style->Colors[ImGuiCol_FrameBgActive]         = ImVec4(0.26f, 1.00f, 0.00f, 1.00f);
style->Colors[ImGuiCol_TitleBg]               = ImVec4(1.00f, 0.98f, 0.95f, 1.00f);
style->Colors[ImGuiCol_TitleBgCollapsed]      = ImVec4(1.00f, 0.98f, 0.95f, 0.75f);
style->Colors[ImGuiCol_TitleBgActive]         = ImVec4(0.25f, 1.00f, 0.00f, 1.00f);
style->Colors[ImGuiCol_MenuBarBg]             = ImVec4(1.00f, 0.98f, 0.95f, 0.47f);
style->Colors[ImGuiCol_ScrollbarBg]           = ImVec4(1.00f, 0.98f, 0.95f, 1.00f);
style->Colors[ImGuiCol_ScrollbarGrab]         = ImVec4(0.00f, 0.00f, 0.00f, 0.21f);
style->Colors[ImGuiCol_ScrollbarGrabHovered]  = ImVec4(0.90f, 0.91f, 0.00f, 0.78f);
style->Colors[ImGuiCol_ScrollbarGrabActive]   = ImVec4(0.25f, 1.00f, 0.00f, 1.00f);
style->Colors[ImGuiCol_ComboBg]               = ImVec4(1.00f, 0.98f, 0.95f, 1.00f);
style->Colors[ImGuiCol_CheckMark]             = ImVec4(0.25f, 1.00f, 0.00f, 0.80f);
style->Colors[ImGuiCol_SliderGrab]            = ImVec4(0.00f, 0.00f, 0.00f, 0.14f);
style->Colors[ImGuiCol_SliderGrabActive]      = ImVec4(0.25f, 1.00f, 0.00f, 1.00f);
style->Colors[ImGuiCol_Button]                = ImVec4(0.00f, 0.00f, 0.00f, 0.14f);
style->Colors[ImGuiCol_ButtonHovered]         = ImVec4(0.99f, 1.00f, 0.22f, 0.86f);
style->Colors[ImGuiCol_ButtonActive]          = ImVec4(0.25f, 1.00f, 0.00f, 1.00f);
style->Colors[ImGuiCol_Header]                = ImVec4(0.25f, 1.00f, 0.00f, 0.76f);
style->Colors[ImGuiCol_HeaderHovered]         = ImVec4(0.25f, 1.00f, 0.00f, 0.86f);
style->Colors[ImGuiCol_HeaderActive]          = ImVec4(0.25f, 1.00f, 0.00f, 1.00f);
style->Colors[ImGuiCol_Column]                = ImVec4(0.00f, 0.00f, 0.00f, 0.32f);
style->Colors[ImGuiCol_ColumnHovered]         = ImVec4(0.25f, 1.00f, 0.00f, 0.78f);
style->Colors[ImGuiCol_ColumnActive]          = ImVec4(0.25f, 1.00f, 0.00f, 1.00f);
style->Colors[ImGuiCol_ResizeGrip]            = ImVec4(0.00f, 0.00f, 0.00f, 0.04f);
style->Colors[ImGuiCol_ResizeGripHovered]     = ImVec4(0.25f, 1.00f, 0.00f, 0.78f);
style->Colors[ImGuiCol_ResizeGripActive]      = ImVec4(0.25f, 1.00f, 0.00f, 1.00f);
style->Colors[ImGuiCol_CloseButton]           = ImVec4(0.40f, 0.39f, 0.38f, 0.16f);
style->Colors[ImGuiCol_CloseButtonHovered]    = ImVec4(0.40f, 0.39f, 0.38f, 0.39f);
style->Colors[ImGuiCol_CloseButtonActive]     = ImVec4(0.40f, 0.39f, 0.38f, 1.00f);
style->Colors[ImGuiCol_PlotLines]             = ImVec4(0.40f, 0.39f, 0.38f, 0.63f);
style->Colors[ImGuiCol_PlotLinesHovered]      = ImVec4(0.25f, 1.00f, 0.00f, 1.00f);
style->Colors[ImGuiCol_PlotHistogram]         = ImVec4(0.40f, 0.39f, 0.38f, 0.63f);
style->Colors[ImGuiCol_PlotHistogramHovered]  = ImVec4(0.25f, 1.00f, 0.00f, 1.00f);
style->Colors[ImGuiCol_TextSelectedBg]        = ImVec4(0.25f, 1.00f, 0.00f, 0.43f);
style->Colors[ImGuiCol_ModalWindowDarkening]  = ImVec4(1.00f, 0.98f, 0.95f, 0.73f);
ocornut commented 8 years ago

From the tools of Boundless ( http://playboundless.com/ ) boundless

wasamasa commented 8 years ago

Blog post by @eliasdaler: https://eliasdaler.github.io/using-imgui-with-sfml-pt1

eliasdaler commented 8 years ago

Also the second part. :)

ocornut commented 8 years ago

Untitled game by @gimblll cobqmxmw8aenyn9 jpg orig

More Lumix Engine cotcsupwgaeflus jpg orig

OpenBoardViewer https://github.com/OpenBoardView/OpenBoardView 5dc7745c-4abe-11e6-9e7f-0215bd9eaef3

WalrusRPG imgui

Flix01 commented 8 years ago

A mine-game for Dear ImGui: imguiminegame

hypernewbie commented 8 years ago

Vulkan static pipeline layout editor vk_pipeline_layout

Vulkan spirv binary decompiler & viewer vk_spirv_viewer

ocornut commented 8 years ago

More from http://playboundless.com from looking at their forum (game is on early access, tools are open I think?)

https://forum.playboundless.com/t/weekly-dev-update-2016-april-15th-c-regen-machines-creatures-gui-more/4216 https://forum.playboundless.com/t/building-worlds-and-biomes-for-boundless/4601

nestedbiomes

fabioarnold commented 8 years ago

Screenshot This is a very primitive offline clone of Shadertoy. It parses the uniforms from a fragment shader and lets you edit them in realtime (by dragging). Link: https://github.com/fabioarnold/TwoTriangles

ocornut commented 8 years ago

@fabioarnold Nice, very good idea! Posting some thoughts on your Github :)

jarikomppa commented 8 years ago

Really simple dot graph thingy.

gif animation

#include "imgui.h"
#define IMGUI_DEFINE_MATH_OPERATORS
#include "imgui_internal.h"

namespace ImGui
{
    int PlotDots(const char *label, const ImVec2& size, int maxpoints, ImVec2 *points)
    {
        int i;
        if (maxpoints < 1)
            return 0;

        ImGuiWindow* window = GetCurrentWindow();

        ImGuiContext& g = *GImGui;
        const ImGuiStyle& style = g.Style;
        const ImGuiID id = window->GetID(label);
        if (window->SkipItems)
            return 0;

        ImRect bb(window->DC.CursorPos, window->DC.CursorPos + size);
        ItemSize(bb);
        if (!ItemAdd(bb, NULL))
            return 0;

        RenderFrame(bb.Min, bb.Max, GetColorU32(ImGuiCol_FrameBg), true, style.FrameRounding);

        float ht = bb.Max.y - bb.Min.y;
        float wd = bb.Max.x - bb.Min.x;

        // dots
        for (i = 0; i < maxpoints; i++)
        {
            ImVec2 a = points[i];
            if (a.x >= 0 && a.x <= 1 && a.y >= 0&& a.y <= 1)
            {
                a = a * (bb.Max - bb.Min) + bb.Min;
                ImVec2 b = a + ImVec2(1.5, 1.5);

                window->DrawList->AddRectFilled(a, b, GetColorU32(ImGuiCol_PlotLines));
            }
        }

        RenderTextClipped(ImVec2(bb.Min.x, bb.Min.y + style.FramePadding.y), bb.Max, label, NULL, NULL, ImGuiAlign_Center);
        return 0;
    }
};
ocornut commented 8 years ago

This is Part 2. I am splitting issues to reduce loading times and locked the old ones.

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 Screenshots Part 9 #2529 Also see: Software using dear imgui (you can help complete the list!)