Browse Source

Examples: Added missing comments in example_apple_metal. (#3400)

ocornut 4 years ago
parent
commit
179dc04d8a

+ 3 - 1
examples/example_apple_metal/README.md

@@ -4,5 +4,7 @@
 
 
 This example shows how to integrate Dear ImGui with Metal. It is based on the "cross-platform" game template provided with Xcode as of Xcode 9.
 This example shows how to integrate Dear ImGui with Metal. It is based on the "cross-platform" game template provided with Xcode as of Xcode 9.
 
 
-(NB: you may still want to use GLFW or SDL which will also support Windows, Linux along with OSX.)
+Consider basing your work off the example_glfw_metal/ or example_sdl_metal/ examples. They are better supported and will be portable unlike this one.
+
+
 
 

+ 30 - 5
examples/example_apple_metal/Shared/Renderer.mm

@@ -15,7 +15,7 @@
 
 
 @implementation Renderer
 @implementation Renderer
 
 
--(nonnull instancetype)initWithView:(nonnull MTKView *)view;
+-(nonnull instancetype)initWithView:(nonnull MTKView*)view;
 {
 {
     self = [super init];
     self = [super init];
     if(self)
     if(self)
@@ -23,17 +23,41 @@
         _device = view.device;
         _device = view.device;
         _commandQueue = [_device newCommandQueue];
         _commandQueue = [_device newCommandQueue];
 
 
+        // Setup Dear ImGui context
+        // FIXME: This example doesn't have proper cleanup...
         IMGUI_CHECKVERSION();
         IMGUI_CHECKVERSION();
         ImGui::CreateContext();
         ImGui::CreateContext();
+        ImGuiIO& io = ImGui::GetIO(); (void)io;
+        //io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;     // Enable Keyboard Controls
+        //io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad;      // Enable Gamepad Controls
+
+        // Setup Dear ImGui style
         ImGui::StyleColorsDark();
         ImGui::StyleColorsDark();
+        //ImGui::StyleColorsClassic();
 
 
+        // Setup Renderer bindings
         ImGui_ImplMetal_Init(_device);
         ImGui_ImplMetal_Init(_device);
+
+        // 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.
+        // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple.
+        // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit).
+        // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call.
+        // - Read 'docs/FONTS.txt' for more instructions and details.
+        // - Remember that in C/C++ if you want to include a backslash \ in a string literal you need to write a double backslash \\ !
+        //io.Fonts->AddFontDefault();
+        //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f);
+        //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f);
+        //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);
+        //io.Fonts->AddFontFromFileTTF("../../misc/fonts/ProggyTiny.ttf", 10.0f);
+        //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese());
+        //IM_ASSERT(font != NULL);
     }
     }
 
 
     return self;
     return self;
 }
 }
 
 
-- (void)drawInMTKView:(MTKView *)view
+- (void)drawInMTKView:(MTKView*)view
 {
 {
     ImGuiIO &io = ImGui::GetIO();
     ImGuiIO &io = ImGui::GetIO();
     io.DisplaySize.x = view.bounds.size.width;
     io.DisplaySize.x = view.bounds.size.width;
@@ -50,11 +74,12 @@
 
 
     id<MTLCommandBuffer> commandBuffer = [self.commandQueue commandBuffer];
     id<MTLCommandBuffer> commandBuffer = [self.commandQueue commandBuffer];
 
 
+    // Our state (make them static = more or less global) as a convenience to keep the example terse.
     static bool show_demo_window = true;
     static bool show_demo_window = true;
     static bool show_another_window = false;
     static bool show_another_window = false;
     static float clear_color[4] = { 0.28f, 0.36f, 0.5f, 1.0f };
     static float clear_color[4] = { 0.28f, 0.36f, 0.5f, 1.0f };
 
 
-    MTLRenderPassDescriptor *renderPassDescriptor = view.currentRenderPassDescriptor;
+    MTLRenderPassDescriptor* renderPassDescriptor = view.currentRenderPassDescriptor;
     if (renderPassDescriptor != nil)
     if (renderPassDescriptor != nil)
     {
     {
         renderPassDescriptor.colorAttachments[0].clearColor = MTLClearColorMake(clear_color[0], clear_color[1], clear_color[2], clear_color[3]);
         renderPassDescriptor.colorAttachments[0].clearColor = MTLClearColorMake(clear_color[0], clear_color[1], clear_color[2], clear_color[3]);
@@ -110,7 +135,7 @@
 
 
         // Rendering
         // Rendering
         ImGui::Render();
         ImGui::Render();
-        ImDrawData *drawData = ImGui::GetDrawData();
+        ImDrawData* drawData = ImGui::GetDrawData();
         ImGui_ImplMetal_RenderDrawData(drawData, commandBuffer, renderEncoder);
         ImGui_ImplMetal_RenderDrawData(drawData, commandBuffer, renderEncoder);
 
 
         [renderEncoder popDebugGroup];
         [renderEncoder popDebugGroup];
@@ -122,7 +147,7 @@
     [commandBuffer commit];
     [commandBuffer commit];
 }
 }
 
 
-- (void)mtkView:(MTKView *)view drawableSizeWillChange:(CGSize)size
+- (void)mtkView:(MTKView*)view drawableSizeWillChange:(CGSize)size
 {
 {
 }
 }
 
 

+ 3 - 1
examples/example_apple_opengl2/main.mm

@@ -45,7 +45,7 @@
 	ImGui_ImplOSX_NewFrame(self);
 	ImGui_ImplOSX_NewFrame(self);
     ImGui::NewFrame();
     ImGui::NewFrame();
 
 
-    // Global data for the demo
+    // Our state (make them static = more or less global) as a convenience to keep the example terse.
     static bool show_demo_window = true;
     static bool show_demo_window = true;
     static bool show_another_window = false;
     static bool show_another_window = false;
     static ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
     static ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
@@ -243,10 +243,12 @@
         NSLog(@"No OpenGL Context!");
         NSLog(@"No OpenGL Context!");
 
 
     // Setup Dear ImGui context
     // Setup Dear ImGui context
+    // FIXME: This example doesn't have proper cleanup...
     IMGUI_CHECKVERSION();
     IMGUI_CHECKVERSION();
     ImGui::CreateContext();
     ImGui::CreateContext();
     ImGuiIO& io = ImGui::GetIO(); (void)io;
     ImGuiIO& io = ImGui::GetIO(); (void)io;
     //io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;     // Enable Keyboard Controls
     //io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;     // Enable Keyboard Controls
+    //io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad;      // Enable Gamepad Controls
 
 
     // Setup Dear ImGui style
     // Setup Dear ImGui style
     ImGui::StyleColorsDark();
     ImGui::StyleColorsDark();