mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 21:21:06 +01:00 
			
		
		
		
	Examples: Apple: Tweak code and sync with other examples better (untested).
This commit is contained in:
		| @@ -294,6 +294,13 @@ GLfloat gCubeVertexData[216] = | ||||
|  | ||||
| - (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); | ||||
|     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); | ||||
|     | ||||
| @@ -301,28 +308,19 @@ GLfloat gCubeVertexData[216] = | ||||
|      | ||||
|     // Render the object with GLKit | ||||
|     [self.effect prepareToDraw]; | ||||
|      | ||||
|     glDrawArrays(GL_TRIANGLES, 0, 36); | ||||
|      | ||||
|     // Render the object again with ES2 | ||||
|     glUseProgram(_program); | ||||
|      | ||||
|     glUniformMatrix4fv(uniforms[UNIFORM_MODELVIEWPROJECTION_MATRIX], 1, 0, _modelViewProjectionMatrix.m); | ||||
|     glUniformMatrix3fv(uniforms[UNIFORM_NORMAL_MATRIX], 1, 0, _normalMatrix.m); | ||||
|     glUniform3f(uniforms[UNIFORM_DIFFUSE_COLOR], _hud.cubeColor1[0], _hud.cubeColor1[1], _hud.cubeColor1[2] ); | ||||
|  | ||||
|     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); | ||||
|      | ||||
|     // Now render Imgui | ||||
|     // Render dear imgui as the last thing in the frame if possible | ||||
|     [self.imgui render]; | ||||
|      | ||||
| } | ||||
|  | ||||
| #pragma mark -  OpenGL ES 2 shader compilation | ||||
|   | ||||
| @@ -10,7 +10,7 @@ | ||||
| void DebugHUD_InitDefaults( DebugHUD *hud ) | ||||
| { | ||||
|     hud->show_demo_window = true; | ||||
|     hud->show_example_window = true; | ||||
|     hud->show_another_window = true; | ||||
|     hud->rotation_speed = 15.0f; | ||||
|      | ||||
|     hud->cubeColor1[0] = 0.4f; | ||||
| @@ -26,19 +26,43 @@ void DebugHUD_InitDefaults( 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! | ||||
|         ImGui::ShowDemoWindow(&hud->show_demo_window ); | ||||
|         static float f = 0.0f; | ||||
|         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::ColorEdit3("Cube 1 Color", hud->cubeColor1); | ||||
|         ImGui::ColorEdit3("Cube 2 Color", hud->cubeColor2); | ||||
|         ImGui::SliderFloat("Rotation Speed", &hud->rotation_speed, 0.0f, 200.0f); | ||||
|         if (ImGui::Button("Close Me")) | ||||
|             hud->show_another_window = false; | ||||
|         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); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
| typedef struct DebugHUD | ||||
| { | ||||
|     bool show_demo_window; | ||||
|     bool show_example_window; | ||||
|     bool show_another_window; | ||||
|     float rotation_speed; | ||||
|     float cubeColor1[4]; | ||||
|     float cubeColor2[4]; | ||||
| @@ -17,8 +17,8 @@ typedef struct DebugHUD | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| void DebugHUD_InitDefaults( DebugHUD *hud ); | ||||
| void DebugHUD_DoInterface( DebugHUD *hud ); | ||||
| void DebugHUD_InitDefaults(DebugHUD *hud); | ||||
| void DebugHUD_DoInterface(DebugHUD *hud); | ||||
|  | ||||
| #if __cplusplus | ||||
| } | ||||
|   | ||||
| @@ -263,7 +263,7 @@ void ImGui_KeyboardCallback(uSynergyCookie cookie, uint16_t key, | ||||
|                             uint16_t modifiers, uSynergyBool down, uSynergyBool repeat) | ||||
| { | ||||
|     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(); | ||||
|     io.KeysDown[key] = down; | ||||
|     io.KeyShift = (modifiers & USYNERGY_MODIFIER_SHIFT); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user