Merge branch 'master' into navigation

# Conflicts:
#	imgui.cpp
This commit is contained in:
omar 2018-01-31 15:43:19 +01:00
commit 23c11e9764
17 changed files with 287 additions and 187 deletions

View File

@ -26,8 +26,8 @@ int main(int, char**)
ImGui_ImplA5_Init(display); ImGui_ImplA5_Init(display);
// Setup style // Setup style
ImGui::StyleColorsClassic(); ImGui::StyleColorsDark();
//ImGui::StyleColorsDark(); //ImGui::StyleColorsClassic();
// Load Fonts // Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
@ -76,25 +76,33 @@ int main(int, char**)
// Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug". // Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug".
{ {
static float f = 0.0f; static float f = 0.0f;
ImGui::Text("Hello, world!"); // Some text (you can use a format string too) static int counter = 0;
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float as a slider from 0.0f to 1.0f ImGui::Text("Hello, world!"); // Display some text (you can use a format string too)
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats as a color ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
if (ImGui::Button("Demo Window")) // Use buttons to toggle our bools. We could use Checkbox() as well. ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
show_demo_window ^= 1;
if (ImGui::Button("Another Window")) ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our windows open/close state
show_another_window ^= 1; ImGui::Checkbox("Another Window", &show_another_window);
if (ImGui::Button("Button")) // Buttons return true when clicked (NB: most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate); ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
} }
// 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name the window. // 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name your windows.
if (show_another_window) if (show_another_window)
{ {
ImGui::Begin("Another Window", &show_another_window); ImGui::Begin("Another Window", &show_another_window);
ImGui::Text("Hello from another window!"); ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End(); ImGui::End();
} }
// 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). // 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). Read its code to learn more about Dear ImGui!
if (show_demo_window) if (show_demo_window)
{ {
ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly! ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly!

View File

@ -294,35 +294,33 @@ GLfloat gCubeVertexData[216] =
- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect - (void)glkView:(GLKView *)view drawInRect:(CGRect)rect
{ {
// Start the dear imgui frame
[self.imgui newFrame];
// Create some UI elements
DebugHUD_DoInterface( &_hud );
// Render
glClearColor(0.65f, 0.65f, 0.65f, 1.0f); glClearColor(0.65f, 0.65f, 0.65f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBindVertexArrayOES(_vertexArray); glBindVertexArrayOES(_vertexArray);
// Render the object with GLKit // Render the object with GLKit
[self.effect prepareToDraw]; [self.effect prepareToDraw];
glDrawArrays(GL_TRIANGLES, 0, 36); glDrawArrays(GL_TRIANGLES, 0, 36);
// Render the object again with ES2 // Render the object again with ES2
glUseProgram(_program); glUseProgram(_program);
glUniformMatrix4fv(uniforms[UNIFORM_MODELVIEWPROJECTION_MATRIX], 1, 0, _modelViewProjectionMatrix.m); glUniformMatrix4fv(uniforms[UNIFORM_MODELVIEWPROJECTION_MATRIX], 1, 0, _modelViewProjectionMatrix.m);
glUniformMatrix3fv(uniforms[UNIFORM_NORMAL_MATRIX], 1, 0, _normalMatrix.m); glUniformMatrix3fv(uniforms[UNIFORM_NORMAL_MATRIX], 1, 0, _normalMatrix.m);
glUniform3f(uniforms[UNIFORM_DIFFUSE_COLOR], _hud.cubeColor1[0], _hud.cubeColor1[1], _hud.cubeColor1[2] ); glUniform3f(uniforms[UNIFORM_DIFFUSE_COLOR], _hud.cubeColor1[0], _hud.cubeColor1[1], _hud.cubeColor1[2] );
glDrawArrays(GL_TRIANGLES, 0, 36); glDrawArrays(GL_TRIANGLES, 0, 36);
[self.imgui newFrame];
// Now do our ImGUI UI
DebugHUD_DoInterface( &_hud );
self.effect.light0.diffuseColor = GLKVector4Make( _hud.cubeColor2[0], _hud.cubeColor2[1], _hud.cubeColor2[2], 1.0f); self.effect.light0.diffuseColor = GLKVector4Make( _hud.cubeColor2[0], _hud.cubeColor2[1], _hud.cubeColor2[2], 1.0f);
// Now render Imgui // Render dear imgui as the last thing in the frame if possible
[self.imgui render]; [self.imgui render];
} }
#pragma mark - OpenGL ES 2 shader compilation #pragma mark - OpenGL ES 2 shader compilation

View File

@ -10,7 +10,7 @@
void DebugHUD_InitDefaults( DebugHUD *hud ) void DebugHUD_InitDefaults( DebugHUD *hud )
{ {
hud->show_demo_window = true; hud->show_demo_window = true;
hud->show_example_window = true; hud->show_another_window = true;
hud->rotation_speed = 15.0f; hud->rotation_speed = 15.0f;
hud->cubeColor1[0] = 0.4f; hud->cubeColor1[0] = 0.4f;
@ -26,19 +26,43 @@ void DebugHUD_InitDefaults( DebugHUD *hud )
void DebugHUD_DoInterface(DebugHUD *hud) void DebugHUD_DoInterface(DebugHUD *hud)
{ {
if (hud->show_demo_window) // 1. Show a simple window.
// Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug".
{ {
ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly! static float f = 0.0f;
ImGui::ShowDemoWindow(&hud->show_demo_window ); static int counter = 0;
ImGui::Text("Hello, world!"); // Display some text (you can use a format string too)
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
ImGui::Checkbox("Demo Window", &hud->show_demo_window); // Edit bools storing our windows open/close state
ImGui::Checkbox("Another Window", &hud->show_another_window);
if (ImGui::Button("Button")) // Buttons return true when clicked (NB: most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
} }
if (hud->show_example_window) // 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name your windows.
if (hud->show_another_window)
{ {
ImGui::Begin("Another Window", &hud->show_example_window); ImGui::Begin("Another Window", &hud-?show_another_window);
ImGui::Text("Hello from another window!"); ImGui::Text("Hello from another window!");
ImGui::ColorEdit3("Cube 1 Color", hud->cubeColor1); ImGui::ColorEdit3("Cube 1 Color", hud->cubeColor1);
ImGui::ColorEdit3("Cube 2 Color", hud->cubeColor2); ImGui::ColorEdit3("Cube 2 Color", hud->cubeColor2);
ImGui::SliderFloat("Rotation Speed", &hud->rotation_speed, 0.0f, 200.0f); ImGui::SliderFloat("Rotation Speed", &hud->rotation_speed, 0.0f, 200.0f);
if (ImGui::Button("Close Me"))
hud->show_another_window = false;
ImGui::End(); ImGui::End();
} }
// 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). Read its code to learn more about Dear ImGui!
if (hud->show_demo_window)
{
ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly!
ImGui::ShowDemoWindow(&hud->show_demo_window);
}
} }

View File

@ -7,7 +7,7 @@
typedef struct DebugHUD typedef struct DebugHUD
{ {
bool show_demo_window; bool show_demo_window;
bool show_example_window; bool show_another_window;
float rotation_speed; float rotation_speed;
float cubeColor1[4]; float cubeColor1[4];
float cubeColor2[4]; float cubeColor2[4];
@ -17,8 +17,8 @@ typedef struct DebugHUD
extern "C" { extern "C" {
#endif #endif
void DebugHUD_InitDefaults( DebugHUD *hud ); void DebugHUD_InitDefaults(DebugHUD *hud);
void DebugHUD_DoInterface( DebugHUD *hud ); void DebugHUD_DoInterface(DebugHUD *hud);
#if __cplusplus #if __cplusplus
} }

View File

@ -263,7 +263,7 @@ void ImGui_KeyboardCallback(uSynergyCookie cookie, uint16_t key,
uint16_t modifiers, uSynergyBool down, uSynergyBool repeat) uint16_t modifiers, uSynergyBool down, uSynergyBool repeat)
{ {
int scanCode = key-1; int scanCode = key-1;
// printf("Synergy: keyboard callback: 0x%02X (%s)", scanCode, down?"true":"false"); // printf("Synergy: keyboard callback: 0x%02X (%s)", scanCode, down?"true":"false");
ImGuiIO& io = ImGui::GetIO(); ImGuiIO& io = ImGui::GetIO();
io.KeysDown[key] = down; io.KeysDown[key] = down;
io.KeyShift = (modifiers & USYNERGY_MODIFIER_SHIFT); io.KeyShift = (modifiers & USYNERGY_MODIFIER_SHIFT);

View File

@ -39,22 +39,20 @@ HRESULT CreateDeviceD3D(HWND hWnd)
{ {
// Setup swap chain // Setup swap chain
DXGI_SWAP_CHAIN_DESC sd; DXGI_SWAP_CHAIN_DESC sd;
{ ZeroMemory(&sd, sizeof(sd));
ZeroMemory(&sd, sizeof(sd)); sd.BufferCount = 2;
sd.BufferCount = 2; sd.BufferDesc.Width = 0;
sd.BufferDesc.Width = 0; sd.BufferDesc.Height = 0;
sd.BufferDesc.Height = 0; sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; sd.BufferDesc.RefreshRate.Numerator = 60;
sd.BufferDesc.RefreshRate.Numerator = 60; sd.BufferDesc.RefreshRate.Denominator = 1;
sd.BufferDesc.RefreshRate.Denominator = 1; sd.Flags = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH;
sd.Flags = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH; sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; sd.OutputWindow = hWnd;
sd.OutputWindow = hWnd; sd.SampleDesc.Count = 1;
sd.SampleDesc.Count = 1; sd.SampleDesc.Quality = 0;
sd.SampleDesc.Quality = 0; sd.Windowed = TRUE;
sd.Windowed = TRUE; sd.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
sd.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
}
UINT createDeviceFlags = 0; UINT createDeviceFlags = 0;
//createDeviceFlags |= D3D10_CREATE_DEVICE_DEBUG; //createDeviceFlags |= D3D10_CREATE_DEVICE_DEBUG;
@ -125,8 +123,8 @@ int main(int, char**)
ImGui_ImplDX10_Init(hwnd, g_pd3dDevice); ImGui_ImplDX10_Init(hwnd, g_pd3dDevice);
// Setup style // Setup style
ImGui::StyleColorsClassic(); ImGui::StyleColorsDark();
//ImGui::StyleColorsDark(); //ImGui::StyleColorsClassic();
// Load Fonts // Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
@ -169,25 +167,33 @@ int main(int, char**)
// Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug". // Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug".
{ {
static float f = 0.0f; static float f = 0.0f;
ImGui::Text("Hello, world!"); // Some text (you can use a format string too) static int counter = 0;
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float as a slider from 0.0f to 1.0f ImGui::Text("Hello, world!"); // Display some text (you can use a format string too)
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats as a color ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
if (ImGui::Button("Demo Window")) // Use buttons to toggle our bools. We could use Checkbox() as well. ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
show_demo_window ^= 1;
if (ImGui::Button("Another Window")) ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our windows open/close state
show_another_window ^= 1; ImGui::Checkbox("Another Window", &show_another_window);
if (ImGui::Button("Button")) // Buttons return true when clicked (NB: most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate); ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
} }
// 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name the window. // 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name your windows.
if (show_another_window) if (show_another_window)
{ {
ImGui::Begin("Another Window", &show_another_window); ImGui::Begin("Another Window", &show_another_window);
ImGui::Text("Hello from another window!"); ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End(); ImGui::End();
} }
// 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). // 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). Read its code to learn more about Dear ImGui!
if (show_demo_window) if (show_demo_window)
{ {
ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly! ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly!

View File

@ -39,22 +39,20 @@ HRESULT CreateDeviceD3D(HWND hWnd)
{ {
// Setup swap chain // Setup swap chain
DXGI_SWAP_CHAIN_DESC sd; DXGI_SWAP_CHAIN_DESC sd;
{ ZeroMemory(&sd, sizeof(sd));
ZeroMemory(&sd, sizeof(sd)); sd.BufferCount = 2;
sd.BufferCount = 2; sd.BufferDesc.Width = 0;
sd.BufferDesc.Width = 0; sd.BufferDesc.Height = 0;
sd.BufferDesc.Height = 0; sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; sd.BufferDesc.RefreshRate.Numerator = 60;
sd.BufferDesc.RefreshRate.Numerator = 60; sd.BufferDesc.RefreshRate.Denominator = 1;
sd.BufferDesc.RefreshRate.Denominator = 1; sd.Flags = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH;
sd.Flags = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH; sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; sd.OutputWindow = hWnd;
sd.OutputWindow = hWnd; sd.SampleDesc.Count = 1;
sd.SampleDesc.Count = 1; sd.SampleDesc.Quality = 0;
sd.SampleDesc.Quality = 0; sd.Windowed = TRUE;
sd.Windowed = TRUE; sd.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
sd.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
}
UINT createDeviceFlags = 0; UINT createDeviceFlags = 0;
//createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG; //createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
@ -130,8 +128,8 @@ int main(int, char**)
//io.NavFlags |= ImGuiNavFlags_EnableKeyboard; //io.NavFlags |= ImGuiNavFlags_EnableKeyboard;
// Setup style // Setup style
ImGui::StyleColorsClassic(); ImGui::StyleColorsDark();
//ImGui::StyleColorsDark(); //ImGui::StyleColorsClassic();
// Load Fonts // Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
@ -173,25 +171,33 @@ int main(int, char**)
// Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug". // Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug".
{ {
static float f = 0.0f; static float f = 0.0f;
ImGui::Text("Hello, world!"); // Some text (you can use a format string too) static int counter = 0;
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float as a slider from 0.0f to 1.0f ImGui::Text("Hello, world!"); // Display some text (you can use a format string too)
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats as a color ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
if (ImGui::Button("Demo Window")) // Use buttons to toggle our bools. We could use Checkbox() as well. ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
show_demo_window ^= 1;
if (ImGui::Button("Another Window")) ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our windows open/close state
show_another_window ^= 1; ImGui::Checkbox("Another Window", &show_another_window);
if (ImGui::Button("Button")) // Buttons return true when clicked (NB: most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate); ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
} }
// 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name the window. // 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name your windows.
if (show_another_window) if (show_another_window)
{ {
ImGui::Begin("Another Window", &show_another_window); ImGui::Begin("Another Window", &show_another_window);
ImGui::Text("Hello from another window!"); ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End(); ImGui::End();
} }
// 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). // 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). Read its code to learn more about Dear ImGui!
if (show_demo_window) if (show_demo_window)
{ {
ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly! ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly!

View File

@ -78,8 +78,8 @@ int main(int, char**)
ImGui_ImplDX9_Init(hwnd, g_pd3dDevice); ImGui_ImplDX9_Init(hwnd, g_pd3dDevice);
// Setup style // Setup style
ImGui::StyleColorsClassic(); ImGui::StyleColorsDark();
//ImGui::StyleColorsDark(); //ImGui::StyleColorsClassic();
// Load Fonts // Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
@ -124,25 +124,33 @@ int main(int, char**)
// Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug". // Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug".
{ {
static float f = 0.0f; static float f = 0.0f;
ImGui::Text("Hello, world!"); // Some text (you can use a format string too) static int counter = 0;
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float as a slider from 0.0f to 1.0f ImGui::Text("Hello, world!"); // Display some text (you can use a format string too)
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats as a color ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
if (ImGui::Button("Demo Window")) // Use buttons to toggle our bools. We could use Checkbox() as well. ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
show_demo_window ^= 1;
if (ImGui::Button("Another Window")) ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our windows open/close state
show_another_window ^= 1; ImGui::Checkbox("Another Window", &show_another_window);
if (ImGui::Button("Button")) // Buttons return true when clicked (NB: most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate); ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
} }
// 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name the window. // 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name your windows.
if (show_another_window) if (show_another_window)
{ {
ImGui::Begin("Another Window", &show_another_window); ImGui::Begin("Another Window", &show_another_window);
ImGui::Text("Hello from another window!"); ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End(); ImGui::End();
} }
// 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). // 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). Read its code to learn more about Dear ImGui!
if (show_demo_window) if (show_demo_window)
{ {
ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly! ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly!

View File

@ -18,8 +18,8 @@ int main(int, char**)
ImGui_Marmalade_Init(true); ImGui_Marmalade_Init(true);
// Setup style // Setup style
ImGui::StyleColorsClassic(); ImGui::StyleColorsDark();
//ImGui::StyleColorsDark(); //ImGui::StyleColorsClassic();
// Load Fonts // Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
@ -59,25 +59,33 @@ int main(int, char**)
// Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug". // Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug".
{ {
static float f = 0.0f; static float f = 0.0f;
ImGui::Text("Hello, world!"); // Some text (you can use a format string too) static int counter = 0;
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float as a slider from 0.0f to 1.0f ImGui::Text("Hello, world!"); // Display some text (you can use a format string too)
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats as a color ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
if (ImGui::Button("Demo Window")) // Use buttons to toggle our bools. We could use Checkbox() as well. ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
show_demo_window ^= 1;
if (ImGui::Button("Another Window")) ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our windows open/close state
show_another_window ^= 1; ImGui::Checkbox("Another Window", &show_another_window);
if (ImGui::Button("Button")) // Buttons return true when clicked (NB: most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate); ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
} }
// 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name the window. // 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name your windows.
if (show_another_window) if (show_another_window)
{ {
ImGui::Begin("Another Window", &show_another_window); ImGui::Begin("Another Window", &show_another_window);
ImGui::Text("Hello from another window!"); ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End(); ImGui::End();
} }
// 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). // 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). Read its code to learn more about Dear ImGui!
if (show_demo_window) if (show_demo_window)
{ {
ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly! ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly!

View File

@ -30,8 +30,8 @@ int main(int, char**)
ImGui_ImplGlfwGL2_Init(window, true); ImGui_ImplGlfwGL2_Init(window, true);
// Setup style // Setup style
ImGui::StyleColorsClassic(); ImGui::StyleColorsDark();
//ImGui::StyleColorsDark(); //ImGui::StyleColorsClassic();
// Load Fonts // Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
@ -67,25 +67,33 @@ int main(int, char**)
// Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug". // Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug".
{ {
static float f = 0.0f; static float f = 0.0f;
ImGui::Text("Hello, world!"); // Some text (you can use a format string too) static int counter = 0;
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float as a slider from 0.0f to 1.0f ImGui::Text("Hello, world!"); // Display some text (you can use a format string too)
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats as a color ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
if (ImGui::Button("Demo Window")) // Use buttons to toggle our bools. We could use Checkbox() as well. ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
show_demo_window ^= 1;
if (ImGui::Button("Another Window")) ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our windows open/close state
show_another_window ^= 1; ImGui::Checkbox("Another Window", &show_another_window);
if (ImGui::Button("Button")) // Buttons return true when clicked (NB: most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate); ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
} }
// 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name the window. // 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name your windows.
if (show_another_window) if (show_another_window)
{ {
ImGui::Begin("Another Window", &show_another_window); ImGui::Begin("Another Window", &show_another_window);
ImGui::Text("Hello from another window!"); ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End(); ImGui::End();
} }
// 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). // 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). Read its code to learn more about Dear ImGui!
if (show_demo_window) if (show_demo_window)
{ {
ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly! ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly!

View File

@ -38,8 +38,8 @@ int main(int, char**)
//io.NavFlags |= ImGuiNavFlags_EnableGamepad; //io.NavFlags |= ImGuiNavFlags_EnableGamepad;
// Setup style // Setup style
ImGui::StyleColorsClassic(); ImGui::StyleColorsDark();
//ImGui::StyleColorsDark(); //ImGui::StyleColorsClassic();
// Load Fonts // Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
@ -74,25 +74,33 @@ int main(int, char**)
// Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug". // Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug".
{ {
static float f = 0.0f; static float f = 0.0f;
ImGui::Text("Hello, world!"); // Some text (you can use a format string too) static int counter = 0;
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float as a slider from 0.0f to 1.0f ImGui::Text("Hello, world!"); // Display some text (you can use a format string too)
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats as a color ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
if (ImGui::Button("Demo Window")) // Use buttons to toggle our bools. We could use Checkbox() as well. ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
show_demo_window ^= 1;
if (ImGui::Button("Another Window")) ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our windows open/close state
show_another_window ^= 1; ImGui::Checkbox("Another Window", &show_another_window);
if (ImGui::Button("Button")) // Buttons return true when clicked (NB: most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate); ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
} }
// 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name the window. // 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name your windows.
if (show_another_window) if (show_another_window)
{ {
ImGui::Begin("Another Window", &show_another_window); ImGui::Begin("Another Window", &show_another_window);
ImGui::Text("Hello from another window!"); ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End(); ImGui::End();
} }
// 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). // 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). Read its code to learn more about Dear ImGui!
if (show_demo_window) if (show_demo_window)
{ {
ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly! ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly!

View File

@ -36,8 +36,8 @@ int main(int, char**)
ImGui_ImplSdlGL2_Init(window); ImGui_ImplSdlGL2_Init(window);
// Setup style // Setup style
ImGui::StyleColorsClassic(); ImGui::StyleColorsDark();
//ImGui::StyleColorsDark(); //ImGui::StyleColorsClassic();
// Load Fonts // Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
@ -76,29 +76,37 @@ int main(int, char**)
} }
ImGui_ImplSdlGL2_NewFrame(window); ImGui_ImplSdlGL2_NewFrame(window);
// 1. Show a simple window // 1. Show a simple window.
// Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug". // Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug".
{ {
static float f = 0.0f; static float f = 0.0f;
ImGui::Text("Hello, world!"); // Some text (you can use a format string too) static int counter = 0;
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float as a slider from 0.0f to 1.0f ImGui::Text("Hello, world!"); // Display some text (you can use a format string too)
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats as a color ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
if (ImGui::Button("Demo Window")) // Use buttons to toggle our bools. We could use Checkbox() as well. ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
show_demo_window ^= 1;
if (ImGui::Button("Another Window")) ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our windows open/close state
show_another_window ^= 1; ImGui::Checkbox("Another Window", &show_another_window);
if (ImGui::Button("Button")) // Buttons return true when clicked (NB: most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate); ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
} }
// 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name the window. // 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name your windows.
if (show_another_window) if (show_another_window)
{ {
ImGui::Begin("Another Window", &show_another_window); ImGui::Begin("Another Window", &show_another_window);
ImGui::Text("Hello from another window!"); ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End(); ImGui::End();
} }
// 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). // 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). Read its code to learn more about Dear ImGui!
if (show_demo_window) if (show_demo_window)
{ {
ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly! ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly!

View File

@ -36,8 +36,8 @@ int main(int, char**)
ImGui_ImplSdlGL3_Init(window); ImGui_ImplSdlGL3_Init(window);
// Setup style // Setup style
ImGui::StyleColorsClassic(); ImGui::StyleColorsDark();
//ImGui::StyleColorsDark(); //ImGui::StyleColorsClassic();
// Load Fonts // Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
@ -80,25 +80,33 @@ int main(int, char**)
// Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug". // Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug".
{ {
static float f = 0.0f; static float f = 0.0f;
ImGui::Text("Hello, world!"); // Some text (you can use a format string too) static int counter = 0;
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float as a slider from 0.0f to 1.0f ImGui::Text("Hello, world!"); // Display some text (you can use a format string too)
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats as a color ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
if (ImGui::Button("Demo Window")) // Use buttons to toggle our bools. We could use Checkbox() as well. ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
show_demo_window ^= 1;
if (ImGui::Button("Another Window")) ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our windows open/close state
show_another_window ^= 1; ImGui::Checkbox("Another Window", &show_another_window);
if (ImGui::Button("Button")) // Buttons return true when clicked (NB: most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate); ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
} }
// 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name the window. // 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name your windows.
if (show_another_window) if (show_another_window)
{ {
ImGui::Begin("Another Window", &show_another_window); ImGui::Begin("Another Window", &show_another_window);
ImGui::Text("Hello from another window!"); ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End(); ImGui::End();
} }
// 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). // 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). Read its code to learn more about Dear ImGui!
if (show_demo_window) if (show_demo_window)
{ {
ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly! ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly!

View File

@ -625,8 +625,8 @@ int main(int, char**)
ImGui_ImplGlfwVulkan_Init(window, true, &init_data); ImGui_ImplGlfwVulkan_Init(window, true, &init_data);
// Setup style // Setup style
ImGui::StyleColorsClassic(); ImGui::StyleColorsDark();
//ImGui::StyleColorsDark(); //ImGui::StyleColorsClassic();
// Load Fonts // Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
@ -700,25 +700,33 @@ int main(int, char**)
// Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug". // Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug".
{ {
static float f = 0.0f; static float f = 0.0f;
ImGui::Text("Hello, world!"); // Some text (you can use a format string too) static int counter = 0;
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float as a slider from 0.0f to 1.0f ImGui::Text("Hello, world!"); // Display some text (you can use a format string too)
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats as a color ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
if (ImGui::Button("Demo Window")) // Use buttons to toggle our bools. We could use Checkbox() as well. ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
show_demo_window ^= 1;
if (ImGui::Button("Another Window")) ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our windows open/close state
show_another_window ^= 1; ImGui::Checkbox("Another Window", &show_another_window);
if (ImGui::Button("Button")) // Buttons return true when clicked (NB: most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate); ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
} }
// 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name the window. // 2. Show another simple window. In most cases you will use an explicit Begin/End pair to name your windows.
if (show_another_window) if (show_another_window)
{ {
ImGui::Begin("Another Window", &show_another_window); ImGui::Begin("Another Window", &show_another_window);
ImGui::Text("Hello from another window!"); ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End(); ImGui::End();
} }
// 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). // 3. Show the ImGui demo window. Most of the sample code is in ImGui::ShowDemoWindow(). Read its code to learn more about Dear ImGui!
if (show_demo_window) if (show_demo_window)
{ {
ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly! ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver); // Normally user code doesn't need/want to call this because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly!

View File

@ -759,7 +759,7 @@ ImGuiStyle::ImGuiStyle()
Alpha = 1.0f; // Global alpha applies to everything in ImGui Alpha = 1.0f; // Global alpha applies to everything in ImGui
WindowPadding = ImVec2(8,8); // Padding within a window WindowPadding = ImVec2(8,8); // Padding within a window
WindowRounding = 7.0f; // Radius of window corners rounding. Set to 0.0f to have rectangular windows WindowRounding = 7.0f; // Radius of window corners rounding. Set to 0.0f to have rectangular windows
WindowBorderSize = 0.0f; // Thickness of border around windows. Generally set to 0.0f or 1.0f. Other values not well tested. WindowBorderSize = 1.0f; // Thickness of border around windows. Generally set to 0.0f or 1.0f. Other values not well tested.
WindowMinSize = ImVec2(32,32); // Minimum window size WindowMinSize = ImVec2(32,32); // Minimum window size
WindowTitleAlign = ImVec2(0.0f,0.5f);// Alignment for title bar text WindowTitleAlign = ImVec2(0.0f,0.5f);// Alignment for title bar text
ChildRounding = 0.0f; // Radius of child window corners rounding. Set to 0.0f to have rectangular child windows ChildRounding = 0.0f; // Radius of child window corners rounding. Set to 0.0f to have rectangular child windows
@ -12890,7 +12890,7 @@ void ImGui::ShowMetricsWindow(bool* p_open)
ImGui::Text("%d vertices, %d indices (%d triangles)", ImGui::GetIO().MetricsRenderVertices, ImGui::GetIO().MetricsRenderIndices, ImGui::GetIO().MetricsRenderIndices / 3); ImGui::Text("%d vertices, %d indices (%d triangles)", ImGui::GetIO().MetricsRenderVertices, ImGui::GetIO().MetricsRenderIndices, ImGui::GetIO().MetricsRenderIndices / 3);
ImGui::Text("%d allocations", ImGui::GetIO().MetricsAllocs); ImGui::Text("%d allocations", ImGui::GetIO().MetricsAllocs);
static bool show_clip_rects = true; static bool show_clip_rects = true;
ImGui::Checkbox("Show clipping rectangles when hovering an ImDrawCmd", &show_clip_rects); ImGui::Checkbox("Show clipping rectangles when hovering draw commands", &show_clip_rects);
ImGui::Separator(); ImGui::Separator();
struct Funcs struct Funcs
@ -12923,7 +12923,7 @@ void ImGui::ShowMetricsWindow(bool* p_open)
continue; continue;
} }
ImDrawIdx* idx_buffer = (draw_list->IdxBuffer.Size > 0) ? draw_list->IdxBuffer.Data : NULL; ImDrawIdx* idx_buffer = (draw_list->IdxBuffer.Size > 0) ? draw_list->IdxBuffer.Data : NULL;
bool pcmd_node_open = ImGui::TreeNode((void*)(pcmd - draw_list->CmdBuffer.begin()), "Draw %-4d %s vtx, tex = %p, clip_rect = (%.0f,%.0f)..(%.0f,%.0f)", pcmd->ElemCount, draw_list->IdxBuffer.Size > 0 ? "indexed" : "non-indexed", pcmd->TextureId, pcmd->ClipRect.x, pcmd->ClipRect.y, pcmd->ClipRect.z, pcmd->ClipRect.w); bool pcmd_node_open = ImGui::TreeNode((void*)(pcmd - draw_list->CmdBuffer.begin()), "Draw %4d %s vtx, tex 0x%p, clip_rect (%4.0f,%4.0f)-(%4.0f,%4.0f)", pcmd->ElemCount, draw_list->IdxBuffer.Size > 0 ? "indexed" : "non-indexed", pcmd->TextureId, pcmd->ClipRect.x, pcmd->ClipRect.y, pcmd->ClipRect.z, pcmd->ClipRect.w);
if (show_clip_rects && ImGui::IsItemHovered()) if (show_clip_rects && ImGui::IsItemHovered())
{ {
ImRect clip_rect = pcmd->ClipRect; ImRect clip_rect = pcmd->ClipRect;
@ -12948,7 +12948,7 @@ void ImGui::ShowMetricsWindow(bool* p_open)
{ {
ImDrawVert& v = draw_list->VtxBuffer[idx_buffer ? idx_buffer[vtx_i] : vtx_i]; ImDrawVert& v = draw_list->VtxBuffer[idx_buffer ? idx_buffer[vtx_i] : vtx_i];
triangles_pos[n] = v.pos; triangles_pos[n] = v.pos;
buf_p += ImFormatString(buf_p, (int)(buf_end - buf_p), "%s %04d { pos = (%8.2f,%8.2f), uv = (%.6f,%.6f), col = %08X }\n", (n == 0) ? "vtx" : " ", vtx_i, v.pos.x, v.pos.y, v.uv.x, v.uv.y, v.col); buf_p += ImFormatString(buf_p, (int)(buf_end - buf_p), "%s %04d: pos (%8.2f,%8.2f), uv (%.6f,%.6f), col %08X\n", (n == 0) ? "vtx" : " ", vtx_i, v.pos.x, v.pos.y, v.uv.x, v.uv.y, v.col);
} }
ImGui::Selectable(buf, false); ImGui::Selectable(buf, false);
if (ImGui::IsItemHovered()) if (ImGui::IsItemHovered())
@ -13008,7 +13008,7 @@ void ImGui::ShowMetricsWindow(bool* p_open)
} }
ImGui::TreePop(); ImGui::TreePop();
} }
if (ImGui::TreeNode("Basic state")) if (ImGui::TreeNode("Internal state"))
{ {
const char* input_source_names[] = { "None", "Mouse", "Nav", "NavGamepad", "NavKeyboard" }; IM_ASSERT(IM_ARRAYSIZE(input_source_names) == ImGuiInputSource_Count_); const char* input_source_names[] = { "None", "Mouse", "Nav", "NavGamepad", "NavKeyboard" }; IM_ASSERT(IM_ARRAYSIZE(input_source_names) == ImGuiInputSource_Count_);
ImGui::Text("HoveredWindow: '%s'", g.HoveredWindow ? g.HoveredWindow->Name : "NULL"); ImGui::Text("HoveredWindow: '%s'", g.HoveredWindow ? g.HoveredWindow->Name : "NULL");

30
imgui.h
View File

@ -891,28 +891,30 @@ enum ImGuiCond_
#endif #endif
}; };
// You may modify the ImGui::GetStyle() main instance during initialization and before NewFrame().
// During the frame, prefer using ImGui::PushStyleVar(ImGuiStyleVar_XXXX)/PopStyleVar() to alter the main style values, and ImGui::PushStyleColor(ImGuiCol_XXX)/PopStyleColor() for colors.
struct ImGuiStyle struct ImGuiStyle
{ {
float Alpha; // Global alpha applies to everything in ImGui float Alpha; // Global alpha applies to everything in ImGui.
ImVec2 WindowPadding; // Padding within a window ImVec2 WindowPadding; // Padding within a window.
float WindowRounding; // Radius of window corners rounding. Set to 0.0f to have rectangular windows float WindowRounding; // Radius of window corners rounding. Set to 0.0f to have rectangular windows.
float WindowBorderSize; // Thickness of border around windows. Generally set to 0.0f or 1.0f. (Other values are not well tested and more CPU/GPU costly) float WindowBorderSize; // Thickness of border around windows. Generally set to 0.0f or 1.0f. (Other values are not well tested and more CPU/GPU costly).
ImVec2 WindowMinSize; // Minimum window size ImVec2 WindowMinSize; // Minimum window size. This is a global setting. If you want to constraint individual windows, use SetNextWindowSizeConstraints().
ImVec2 WindowTitleAlign; // Alignment for title bar text. Defaults to (0.0f,0.5f) for left-aligned,vertically centered. ImVec2 WindowTitleAlign; // Alignment for title bar text. Defaults to (0.0f,0.5f) for left-aligned,vertically centered.
float ChildRounding; // Radius of child window corners rounding. Set to 0.0f to have rectangular windows. float ChildRounding; // Radius of child window corners rounding. Set to 0.0f to have rectangular windows.
float ChildBorderSize; // Thickness of border around child windows. Generally set to 0.0f or 1.0f. (Other values are not well tested and more CPU/GPU costly) float ChildBorderSize; // Thickness of border around child windows. Generally set to 0.0f or 1.0f. (Other values are not well tested and more CPU/GPU costly).
float PopupRounding; // Radius of popup window corners rounding. float PopupRounding; // Radius of popup window corners rounding.
float PopupBorderSize; // Thickness of border around popup windows. Generally set to 0.0f or 1.0f. (Other values are not well tested and more CPU/GPU costly) float PopupBorderSize; // Thickness of border around popup windows. Generally set to 0.0f or 1.0f. (Other values are not well tested and more CPU/GPU costly).
ImVec2 FramePadding; // Padding within a framed rectangle (used by most widgets) ImVec2 FramePadding; // Padding within a framed rectangle (used by most widgets).
float FrameRounding; // Radius of frame corners rounding. Set to 0.0f to have rectangular frame (used by most widgets). float FrameRounding; // Radius of frame corners rounding. Set to 0.0f to have rectangular frame (used by most widgets).
float FrameBorderSize; // Thickness of border around frames. Generally set to 0.0f or 1.0f. (Other values are not well tested and more CPU/GPU costly) float FrameBorderSize; // Thickness of border around frames. Generally set to 0.0f or 1.0f. (Other values are not well tested and more CPU/GPU costly).
ImVec2 ItemSpacing; // Horizontal and vertical spacing between widgets/lines ImVec2 ItemSpacing; // Horizontal and vertical spacing between widgets/lines.
ImVec2 ItemInnerSpacing; // Horizontal and vertical spacing between within elements of a composed widget (e.g. a slider and its label) ImVec2 ItemInnerSpacing; // Horizontal and vertical spacing between within elements of a composed widget (e.g. a slider and its label).
ImVec2 TouchExtraPadding; // Expand reactive bounding box for touch-based system where touch position is not accurate enough. Unfortunately we don't sort widgets so priority on overlap will always be given to the first widget. So don't grow this too much! ImVec2 TouchExtraPadding; // Expand reactive bounding box for touch-based system where touch position is not accurate enough. Unfortunately we don't sort widgets so priority on overlap will always be given to the first widget. So don't grow this too much!
float IndentSpacing; // Horizontal indentation when e.g. entering a tree node. Generally == (FontSize + FramePadding.x*2). float IndentSpacing; // Horizontal indentation when e.g. entering a tree node. Generally == (FontSize + FramePadding.x*2).
float ColumnsMinSpacing; // Minimum horizontal spacing between two columns float ColumnsMinSpacing; // Minimum horizontal spacing between two columns.
float ScrollbarSize; // Width of the vertical scrollbar, Height of the horizontal scrollbar float ScrollbarSize; // Width of the vertical scrollbar, Height of the horizontal scrollbar.
float ScrollbarRounding; // Radius of grab corners for scrollbar float ScrollbarRounding; // Radius of grab corners for scrollbar.
float GrabMinSize; // Minimum width/height of a grab box for slider/scrollbar. float GrabMinSize; // Minimum width/height of a grab box for slider/scrollbar.
float GrabRounding; // Radius of grabs corners rounding. Set to 0.0f to have rectangular slider grabs. float GrabRounding; // Radius of grabs corners rounding. Set to 0.0f to have rectangular slider grabs.
ImVec2 ButtonTextAlign; // Alignment of button text when button is larger than text. Defaults to (0.5f,0.5f) for horizontally+vertically centered. ImVec2 ButtonTextAlign; // Alignment of button text when button is larger than text. Defaults to (0.5f,0.5f) for horizontally+vertically centered.

View File

@ -94,7 +94,7 @@ static void ShowHelpMarker(const char* desc)
if (ImGui::IsItemHovered()) if (ImGui::IsItemHovered())
{ {
ImGui::BeginTooltip(); ImGui::BeginTooltip();
ImGui::PushTextWrapPos(450.0f); ImGui::PushTextWrapPos(ImGui::GetFontSize() * 35.0f);
ImGui::TextUnformatted(desc); ImGui::TextUnformatted(desc);
ImGui::PopTextWrapPos(); ImGui::PopTextWrapPos();
ImGui::EndTooltip(); ImGui::EndTooltip();
@ -2002,7 +2002,7 @@ void ImGui::ShowDemoWindow(bool* p_open)
// Here we use the simplified Combo() api that packs items into a single literal string. Useful for quick combo boxes where the choices are known locally. // Here we use the simplified Combo() api that packs items into a single literal string. Useful for quick combo boxes where the choices are known locally.
bool ImGui::ShowStyleSelector(const char* label) bool ImGui::ShowStyleSelector(const char* label)
{ {
static int style_idx = 0; static int style_idx = -1;
if (ImGui::Combo(label, &style_idx, "Classic\0Dark\0Light\0")) if (ImGui::Combo(label, &style_idx, "Classic\0Dark\0Light\0"))
{ {
switch (style_idx) switch (style_idx)