next                                                                                                                                                                                
 imgui/examples/example_glfw_vulkan/main.cpp:67                                          │ imgui/examples/example_sdl_vulkan/main.cpp:59                                            
                                                                                         │                                                                                          
    VkResult err;                                                                        │      VkResult err;                                                                       
                                                                                         │                                                                                          
    // Create Vulkan Instance                                                            │      // Create Vulkan Instance                                                           
    {                                                                                    │      {                                                                                   
        VkInstanceCreateInfo create_info = {};                                           │          VkInstanceCreateInfo create_info = {};                                          
        create_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;                      │          create_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;                     
        create_info.enabledExtensionCount = extensions_count;                            │          create_info.enabledExtensionCount = extensions_count;                           
        create_info.ppEnabledExtensionNames = extensions;                                │          create_info.ppEnabledExtensionNames = extensions;                               
#ifdef IMGUI_VULKAN_DEBUG_REPORT                                                         │  #ifdef IMGUI_VULKAN_DEBUG_REPORT                                                        
        // Enabling validation layers                                                    │          // Enabling validation layers                                                   
        const char* layers[] = { "VK_LAYER_KHRONOS_validation" };                        │          const char* layers[] = { "VK_LAYER_KHRONOS_validation" };                       
        create_info.enabledLayerCount = 1;                                               │          create_info.enabledLayerCount = 1;                                              
        create_info.ppEnabledLayerNames = layers;                                        │          create_info.ppEnabledLayerNames = layers;                                       
                                                                                         │                                                                                          
        // Enable debug report extension (we need additional storage, so we duplicate th │          // Enable debug report extension (we need additional storage, so we duplicate th
        const char** extensions_ext = (const char**)malloc(sizeof(const char*) * (extens │          const char** extensions_ext = (const char**)malloc(sizeof(const char*) * (extens
        memcpy(extensions_ext, extensions, extensions_count * sizeof(const char*));      │          memcpy(extensions_ext, extensions, extensions_count * sizeof(const char*));     
        extensions_ext[extensions_count] = "VK_EXT_debug_report";                        │          extensions_ext[extensions_count] = "VK_EXT_debug_report";                       
        create_info.enabledExtensionCount = extensions_count + 1;                        │          create_info.enabledExtensionCount = extensions_count + 1;                       
        create_info.ppEnabledExtensionNames = extensions_ext;                            │          create_info.ppEnabledExtensionNames = extensions_ext;                           
                                                                                         │                                                                                          
        // Create Vulkan Instance                                                        │          // Create Vulkan Instance                                                       
        err = vkCreateInstance(&create_info, g_Allocator, &g_Instance);                  │          err = vkCreateInstance(&create_info, g_Allocator, &g_Instance);                 
        check_vk_result(err);                                                            │          check_vk_result(err);                                                           
        free(extensions_ext);                                                            │          free(extensions_ext);                                                           
                                                                                         │                                                                                          
        // Get the function pointer (required for any extensions)                        │          // Get the function pointer (required for any extensions)                       
        auto vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)vkGetI │          auto vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)vkGetI
        IM_ASSERT(vkCreateDebugReportCallbackEXT != NULL);                               │          IM_ASSERT(vkCreateDebugReportCallbackEXT != NULL);                              
                                                                                         │                                                                                          
        // Setup the debug report callback                                               │          // Setup the debug report callback                                              
        VkDebugReportCallbackCreateInfoEXT debug_report_ci = {};                         │          VkDebugReportCallbackCreateInfoEXT debug_report_ci = {};                        
        debug_report_ci.sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT; │          debug_report_ci.sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT;
        debug_report_ci.flags = VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_ │          debug_report_ci.flags = VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_
        debug_report_ci.pfnCallback = debug_report;                                      │          debug_report_ci.pfnCallback = debug_report;                                     
        debug_report_ci.pUserData = NULL;                                                │          debug_report_ci.pUserData = NULL;                                               
        err = vkCreateDebugReportCallbackEXT(g_Instance, &debug_report_ci, g_Allocator,  │          err = vkCreateDebugReportCallbackEXT(g_Instance, &debug_report_ci, g_Allocator, 
        check_vk_result(err);                                                            │          check_vk_result(err);                                                           
#else                                                                                    │  #else                                                                                   
        // Create Vulkan Instance without any debug feature                              │          // Create Vulkan Instance without any debug feature                             
        err = vkCreateInstance(&create_info, g_Allocator, &g_Instance);                  │          err = vkCreateInstance(&create_info, g_Allocator, &g_Instance);                 
        check_vk_result(err);                                                            │          check_vk_result(err);                                                           
        IM_UNUSED(g_DebugReport);                                                        │          IM_UNUSED(g_DebugReport);                                                       
#endif                                                                                   │  #endif                                                                                  
    }                                                                                    │      }                                                                                   
                                                                                         │                                                                                          
    // Select GPU                                                                        │      // Select GPU                                                                       
    {                                                                                    │      {                                                                                   
        uint32_t gpu_count;                                                              │          uint32_t gpu_count;                                                             
        err = vkEnumeratePhysicalDevices(g_Instance, &gpu_count, NULL);                  │          err = vkEnumeratePhysicalDevices(g_Instance, &gpu_count, NULL);                 
        check_vk_result(err);                                                            │          check_vk_result(err);                                                           
        IM_ASSERT(gpu_count > 0);                                                        │          IM_ASSERT(gpu_count > 0);                                                       
                                                                                         │                                                                                          
        VkPhysicalDevice* gpus = (VkPhysicalDevice*)malloc(sizeof(VkPhysicalDevice) * gp │          VkPhysicalDevice* gpus = (VkPhysicalDevice*)malloc(sizeof(VkPhysicalDevice) * gp
        err = vkEnumeratePhysicalDevices(g_Instance, &gpu_count, gpus);                  │          err = vkEnumeratePhysicalDevices(g_Instance, &gpu_count, gpus);                 
        check_vk_result(err);                                                            │          check_vk_result(err);                                                           
                                                                                         │                                                                                          
        // If a number >1 of GPUs got reported, find discrete GPU if present, or use fir │          // If a number >1 of GPUs got reported, find discrete GPU if present, or use fir
        // most common cases (multi-gpu/integrated+dedicated graphics). Handling more co │          // most common cases (multi-gpu/integrated+dedicated graphics). Handling more co
        // dedicated GPUs) is out of scope of this sample.                               │          // dedicated GPUs) is out of scope of this sample.                              
        int use_gpu = 0;                                                                 │          int use_gpu = 0;                                                                
        for (int i = 0; i < (int)gpu_count; i++)                                         │          for (int i = 0; i < (int)gpu_count; i++)                                        
        {                                                                                │          {                                                                               
            VkPhysicalDeviceProperties properties;                                       │              VkPhysicalDeviceProperties properties;                                      
            vkGetPhysicalDeviceProperties(gpus[i], &properties);                         │              vkGetPhysicalDeviceProperties(gpus[i], &properties);                        
            if (properties.deviceType == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU)           │              if (properties.deviceType == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU)          
            {                                                                            │              {                                                                           
                use_gpu = i;                                                             │                  use_gpu = i;                                                            
                break;                                                                   │                  break;                                                                  
            }                                                                            │              }                                                                           
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        g_PhysicalDevice = gpus[use_gpu];                                                │          g_PhysicalDevice = gpus[use_gpu];                                               
        free(gpus);                                                                      │          free(gpus);                                                                     
    }                                                                                    │      }                                                                                   
                                                                                         │                                                                                          
    // Select graphics queue family                                                      │      // Select graphics queue family                                                     
    {                                                                                    │      {                                                                                   
        uint32_t count;                                                                  │          uint32_t count;                                                                 
        vkGetPhysicalDeviceQueueFamilyProperties(g_PhysicalDevice, &count, NULL);        │          vkGetPhysicalDeviceQueueFamilyProperties(g_PhysicalDevice, &count, NULL);       
        VkQueueFamilyProperties* queues = (VkQueueFamilyProperties*)malloc(sizeof(VkQueu │          VkQueueFamilyProperties* queues = (VkQueueFamilyProperties*)malloc(sizeof(VkQueu
        vkGetPhysicalDeviceQueueFamilyProperties(g_PhysicalDevice, &count, queues);      │          vkGetPhysicalDeviceQueueFamilyProperties(g_PhysicalDevice, &count, queues);     
        for (uint32_t i = 0; i < count; i++)                                             │          for (uint32_t i = 0; i < count; i++)                                            
            if (queues[i].queueFlags & VK_QUEUE_GRAPHICS_BIT)                            │              if (queues[i].queueFlags & VK_QUEUE_GRAPHICS_BIT)                           
            {                                                                            │              {                                                                           
                g_QueueFamily = i;                                                       │                  g_QueueFamily = i;                                                      
                break;                                                                   │                  break;                                                                  
            }                                                                            │              }                                                                           
        free(queues);                                                                    │          free(queues);                                                                   
        IM_ASSERT(g_QueueFamily != (uint32_t)-1);                                        │          IM_ASSERT(g_QueueFamily != (uint32_t)-1);                                       
    }                                                                                    │      }                                                                                   
                                                                                         │                                                                                          
    // Create Logical Device (with 1 queue)                                              │      // Create Logical Device (with 1 queue)                                             
    {                                                                                    │      {                                                                                   
        int device_extension_count = 1;                                                  │          int device_extension_count = 1;                                                 
        const char* device_extensions[] = { "VK_KHR_swapchain" };                        │          const char* device_extensions[] = { "VK_KHR_swapchain" };                       
        const float queue_priority[] = { 1.0f };                                         │          const float queue_priority[] = { 1.0f };                                        
        VkDeviceQueueCreateInfo queue_info[1] = {};                                      │          VkDeviceQueueCreateInfo queue_info[1] = {};                                     
        queue_info[0].sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;                │          queue_info[0].sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;               
        queue_info[0].queueFamilyIndex = g_QueueFamily;                                  │          queue_info[0].queueFamilyIndex = g_QueueFamily;                                 
        queue_info[0].queueCount = 1;                                                    │          queue_info[0].queueCount = 1;                                                   
        queue_info[0].pQueuePriorities = queue_priority;                                 │          queue_info[0].pQueuePriorities = queue_priority;                                
        VkDeviceCreateInfo create_info = {};                                             │          VkDeviceCreateInfo create_info = {};                                            
        create_info.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;                        │          create_info.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;                       
        create_info.queueCreateInfoCount = sizeof(queue_info) / sizeof(queue_info[0]);   │          create_info.queueCreateInfoCount = sizeof(queue_info) / sizeof(queue_info[0]);  
        create_info.pQueueCreateInfos = queue_info;                                      │          create_info.pQueueCreateInfos = queue_info;                                     
        create_info.enabledExtensionCount = device_extension_count;                      │          create_info.enabledExtensionCount = device_extension_count;                     
        create_info.ppEnabledExtensionNames = device_extensions;                         │          create_info.ppEnabledExtensionNames = device_extensions;                        
        err = vkCreateDevice(g_PhysicalDevice, &create_info, g_Allocator, &g_Device);    │          err = vkCreateDevice(g_PhysicalDevice, &create_info, g_Allocator, &g_Device);   
        check_vk_result(err);                                                            │          check_vk_result(err);                                                           
        vkGetDeviceQueue(g_Device, g_QueueFamily, 0, &g_Queue);                          │          vkGetDeviceQueue(g_Device, g_QueueFamily, 0, &g_Queue);                         
    }                                                                                    │      }                                                                                   
                                                                                         │                                                                                          
    // Create Descriptor Pool                                                            │      // Create Descriptor Pool                                                           
    {                                                                                    │      {                                                                                   
        VkDescriptorPoolSize pool_sizes[] =                                              │          VkDescriptorPoolSize pool_sizes[] =                                             
        {                                                                                │          {                                                                               
            { VK_DESCRIPTOR_TYPE_SAMPLER, 1000 },                                        │              { VK_DESCRIPTOR_TYPE_SAMPLER, 1000 },                                       
            { VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1000 },                         │              { VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1000 },                        
            { VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, 1000 },                                  │              { VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, 1000 },                                 
            { VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, 1000 },                                  │              { VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, 1000 },                                 
            { VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, 1000 },                           │              { VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, 1000 },                          
            { VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, 1000 },                           │              { VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, 1000 },                          
            { VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 1000 },                                 │              { VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 1000 },                                
            { VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1000 },                                 │              { VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1000 },                                
            { VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, 1000 },                         │              { VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, 1000 },                        
            { VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, 1000 },                         │              { VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, 1000 },                        
            { VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, 1000 }                                │              { VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, 1000 }                               
        };                                                                               │          };                                                                              
        VkDescriptorPoolCreateInfo pool_info = {};                                       │          VkDescriptorPoolCreateInfo pool_info = {};                                      
        pool_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;                 │          pool_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;                
        pool_info.flags = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT;             │          pool_info.flags = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT;            
        pool_info.maxSets = 1000 * IM_ARRAYSIZE(pool_sizes);                             │          pool_info.maxSets = 1000 * IM_ARRAYSIZE(pool_sizes);                            
        pool_info.poolSizeCount = (uint32_t)IM_ARRAYSIZE(pool_sizes);                    │          pool_info.poolSizeCount = (uint32_t)IM_ARRAYSIZE(pool_sizes);                   
        pool_info.pPoolSizes = pool_sizes;                                               │          pool_info.pPoolSizes = pool_sizes;                                              
        err = vkCreateDescriptorPool(g_Device, &pool_info, g_Allocator, &g_DescriptorPoo │          err = vkCreateDescriptorPool(g_Device, &pool_info, g_Allocator, &g_DescriptorPoo
        check_vk_result(err);                                                            │          check_vk_result(err);                                                           
    }                                                                                    │      }                                                                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/backends/imgui_impl_dx10.cpp:357                                                  │ imgui/backends/imgui_impl_dx11.cpp:369                                                   
                                                                                         │                                                                                          
    ImGui_ImplDX10_Data* bd = ImGui_ImplDX10_GetBackendData();                           │      ImGui_ImplDX11_Data* bd = ImGui_ImplDX11_GetBackendData();                          
    if (!bd->pd3dDevice)                                                                 │      if (!bd->pd3dDevice)                                                                
        return false;                                                                    │          return false;                                                                   
    if (bd->pFontSampler)                                                                │      if (bd->pFontSampler)                                                               
        ImGui_ImplDX10_InvalidateDeviceObjects();                                        │          ImGui_ImplDX11_InvalidateDeviceObjects();                                       
                                                                                         │                                                                                          
    // By using D3DCompile() from <d3dcompiler.h> / d3dcompiler.lib, we introduce a depe │      // By using D3DCompile() from <d3dcompiler.h> / d3dcompiler.lib, we introduce a depe
    // If you would like to use this DX10 sample code but remove this dependency you can │      // If you would like to use this DX11 sample code but remove this dependency you can
    //  1) compile once, save the compiled shader blobs into a file or source code and p │      //  1) compile once, save the compiled shader blobs into a file or source code and p
    //  2) use code to detect any version of the DLL and grab a pointer to D3DCompile fr │      //  2) use code to detect any version of the DLL and grab a pointer to D3DCompile fr
    // See https://github.com/ocornut/imgui/pull/638 for sources and details.            │      // See https://github.com/ocornut/imgui/pull/638 for sources and details.           
                                                                                         │                                                                                          
    // Create the vertex shader                                                          │      // Create the vertex shader                                                         
    {                                                                                    │      {                                                                                   
        static const char* vertexShader =                                                │          static const char* vertexShader =                                               
            "cbuffer vertexBuffer : register(b0) \                                       │              "cbuffer vertexBuffer : register(b0) \                                      
            {\                                                                           │              {\                                                                          
              float4x4 ProjectionMatrix; \                                               │                float4x4 ProjectionMatrix; \                                              
            };\                                                                          │              };\                                                                         
            struct VS_INPUT\                                                             │              struct VS_INPUT\                                                            
            {\                                                                           │              {\                                                                          
              float2 pos : POSITION;\                                                    │                float2 pos : POSITION;\                                                   
              float4 col : COLOR0;\                                                      │                float4 col : COLOR0;\                                                     
              float2 uv  : TEXCOORD0;\                                                   │                float2 uv  : TEXCOORD0;\                                                  
            };\                                                                          │              };\                                                                         
            \                                                                            │              \                                                                           
            struct PS_INPUT\                                                             │              struct PS_INPUT\                                                            
            {\                                                                           │              {\                                                                          
              float4 pos : SV_POSITION;\                                                 │                float4 pos : SV_POSITION;\                                                
              float4 col : COLOR0;\                                                      │                float4 col : COLOR0;\                                                     
              float2 uv  : TEXCOORD0;\                                                   │                float2 uv  : TEXCOORD0;\                                                  
            };\                                                                          │              };\                                                                         
            \                                                                            │              \                                                                           
            PS_INPUT main(VS_INPUT input)\                                               │              PS_INPUT main(VS_INPUT input)\                                              
            {\                                                                           │              {\                                                                          
              PS_INPUT output;\                                                          │                PS_INPUT output;\                                                         
              output.pos = mul( ProjectionMatrix, float4(input.pos.xy, 0.f, 1.f));\      │                output.pos = mul( ProjectionMatrix, float4(input.pos.xy, 0.f, 1.f));\     
              output.col = input.col;\                                                   │                output.col = input.col;\                                                  
              output.uv  = input.uv;\                                                    │                output.uv  = input.uv;\                                                   
              return output;\                                                            │                return output;\                                                           
            }";                                                                          │              }";                                                                         
                                                                                         │                                                                                          
        ID3DBlob* vertexShaderBlob;                                                      │          ID3DBlob* vertexShaderBlob;                                                     
        if (FAILED(D3DCompile(vertexShader, strlen(vertexShader), NULL, NULL, NULL, "mai │          if (FAILED(D3DCompile(vertexShader, strlen(vertexShader), NULL, NULL, NULL, "mai
            return false; // NB: Pass ID3DBlob* pErrorBlob to D3DCompile() to get error  │              return false; // NB: Pass ID3DBlob* pErrorBlob to D3DCompile() to get error 
        if (bd->pd3dDevice->CreateVertexShader(vertexShaderBlob->GetBufferPointer(), ver │          if (bd->pd3dDevice->CreateVertexShader(vertexShaderBlob->GetBufferPointer(), ver
        {                                                                                │          {                                                                               
            vertexShaderBlob->Release();                                                 │              vertexShaderBlob->Release();                                                
            return false;                                                                │              return false;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // Create the input layout                                                       │          // Create the input layout                                                      
        D3D10_INPUT_ELEMENT_DESC local_layout[] =                                        │          D3D11_INPUT_ELEMENT_DESC local_layout[] =                                       
        {                                                                                │          {                                                                               
            { "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT,   0, (UINT)IM_OFFSETOF(ImDrawVert │              { "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT,   0, (UINT)IM_OFFSETOF(ImDrawVert
            { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT,   0, (UINT)IM_OFFSETOF(ImDrawVert │              { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT,   0, (UINT)IM_OFFSETOF(ImDrawVert
            { "COLOR",    0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, (UINT)IM_OFFSETOF(ImDrawVert │              { "COLOR",    0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, (UINT)IM_OFFSETOF(ImDrawVert
        };                                                                               │          };                                                                              
        if (bd->pd3dDevice->CreateInputLayout(local_layout, 3, vertexShaderBlob->GetBuff │          if (bd->pd3dDevice->CreateInputLayout(local_layout, 3, vertexShaderBlob->GetBuff
        {                                                                                │          {                                                                               
            vertexShaderBlob->Release();                                                 │              vertexShaderBlob->Release();                                                
            return false;                                                                │              return false;                                                               
        }                                                                                │          }                                                                               
        vertexShaderBlob->Release();                                                     │          vertexShaderBlob->Release();                                                    
                                                                                         │                                                                                          
        // Create the constant buffer                                                    │          // Create the constant buffer                                                   
        {                                                                                │          {                                                                               
            D3D10_BUFFER_DESC desc;                                                      │              D3D11_BUFFER_DESC desc;                                                     
            desc.ByteWidth = sizeof(VERTEX_CONSTANT_BUFFER);                             │              desc.ByteWidth = sizeof(VERTEX_CONSTANT_BUFFER);                            
            desc.Usage = D3D10_USAGE_DYNAMIC;                                            │              desc.Usage = D3D11_USAGE_DYNAMIC;                                           
            desc.BindFlags = D3D10_BIND_CONSTANT_BUFFER;                                 │              desc.BindFlags = D3D11_BIND_CONSTANT_BUFFER;                                
            desc.CPUAccessFlags = D3D10_CPU_ACCESS_WRITE;                                │              desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;                               
            desc.MiscFlags = 0;                                                          │              desc.MiscFlags = 0;                                                         
            bd->pd3dDevice->CreateBuffer(&desc, NULL, &bd->pVertexConstantBuffer);       │              bd->pd3dDevice->CreateBuffer(&desc, NULL, &bd->pVertexConstantBuffer);      
        }                                                                                │          }                                                                               
    }                                                                                    │      }                                                                                   
                                                                                         │                                                                                          
    // Create the pixel shader                                                           │      // Create the pixel shader                                                          
    {                                                                                    │      {                                                                                   
        static const char* pixelShader =                                                 │          static const char* pixelShader =                                                
            "struct PS_INPUT\                                                            │              "struct PS_INPUT\                                                           
            {\                                                                           │              {\                                                                          
            float4 pos : SV_POSITION;\                                                   │              float4 pos : SV_POSITION;\                                                  
            float4 col : COLOR0;\                                                        │              float4 col : COLOR0;\                                                       
            float2 uv  : TEXCOORD0;\                                                     │              float2 uv  : TEXCOORD0;\                                                    
            };\                                                                          │              };\                                                                         
            sampler sampler0;\                                                           │              sampler sampler0;\                                                          
            Texture2D texture0;\                                                         │              Texture2D texture0;\                                                        
            \                                                                            │              \                                                                           
            float4 main(PS_INPUT input) : SV_Target\                                     │              float4 main(PS_INPUT input) : SV_Target\                                    
            {\                                                                           │              {\                                                                          
            float4 out_col = input.col * texture0.Sample(sampler0, input.uv); \          │              float4 out_col = input.col * texture0.Sample(sampler0, input.uv); \         
            return out_col; \                                                            │              return out_col; \                                                           
            }";                                                                          │              }";                                                                         
                                                                                         │                                                                                          
        ID3DBlob* pixelShaderBlob;                                                       │          ID3DBlob* pixelShaderBlob;                                                      
        if (FAILED(D3DCompile(pixelShader, strlen(pixelShader), NULL, NULL, NULL, "main" │          if (FAILED(D3DCompile(pixelShader, strlen(pixelShader), NULL, NULL, NULL, "main"
            return false; // NB: Pass ID3DBlob* pErrorBlob to D3DCompile() to get error  │              return false; // NB: Pass ID3DBlob* pErrorBlob to D3DCompile() to get error 
        if (bd->pd3dDevice->CreatePixelShader(pixelShaderBlob->GetBufferPointer(), pixel │          if (bd->pd3dDevice->CreatePixelShader(pixelShaderBlob->GetBufferPointer(), pixel
        {                                                                                │          {                                                                               
            pixelShaderBlob->Release();                                                  │              pixelShaderBlob->Release();                                                 
            return false;                                                                │              return false;                                                               
        }                                                                                │          }                                                                               
        pixelShaderBlob->Release();                                                      │          pixelShaderBlob->Release();                                                     
    }                                                                                    │      }                                                                                   
                                                                                         │                                                                                          
    // Create the blending setup                                                         │      // Create the blending setup                                                        
    {                                                                                    │      {                                                                                   
        D3D10_BLEND_DESC desc;                                                           │          D3D11_BLEND_DESC desc;                                                          
        ZeroMemory(&desc, sizeof(desc));                                                 │          ZeroMemory(&desc, sizeof(desc));                                                
        desc.AlphaToCoverageEnable = false;                                              │          desc.AlphaToCoverageEnable = false;                                             
        desc.BlendEnable[0] = true;                                                      │          desc.RenderTarget[0].BlendEnable = true;                                        
        desc.SrcBlend = D3D10_BLEND_SRC_ALPHA;                                           │          desc.RenderTarget[0].SrcBlend = D3D11_BLEND_SRC_ALPHA;                          
        desc.DestBlend = D3D10_BLEND_INV_SRC_ALPHA;                                      │          desc.RenderTarget[0].DestBlend = D3D11_BLEND_INV_SRC_ALPHA;                     
        desc.BlendOp = D3D10_BLEND_OP_ADD;                                               │          desc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD;                              
        desc.SrcBlendAlpha = D3D10_BLEND_ONE;                                            │          desc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ONE;                           
        desc.DestBlendAlpha = D3D10_BLEND_INV_SRC_ALPHA;                                 │          desc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_INV_SRC_ALPHA;                
        desc.BlendOpAlpha = D3D10_BLEND_OP_ADD;                                          │          desc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD;                         
        desc.RenderTargetWriteMask[0] = D3D10_COLOR_WRITE_ENABLE_ALL;                    │          desc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL;      
        bd->pd3dDevice->CreateBlendState(&desc, &bd->pBlendState);                       │          bd->pd3dDevice->CreateBlendState(&desc, &bd->pBlendState);                      
    }                                                                                    │      }                                                                                   
                                                                                         │                                                                                          
    // Create the rasterizer state                                                       │      // Create the rasterizer state                                                      
    {                                                                                    │      {                                                                                   
        D3D10_RASTERIZER_DESC desc;                                                      │          D3D11_RASTERIZER_DESC desc;                                                     
        ZeroMemory(&desc, sizeof(desc));                                                 │          ZeroMemory(&desc, sizeof(desc));                                                
        desc.FillMode = D3D10_FILL_SOLID;                                                │          desc.FillMode = D3D11_FILL_SOLID;                                               
        desc.CullMode = D3D10_CULL_NONE;                                                 │          desc.CullMode = D3D11_CULL_NONE;                                                
        desc.ScissorEnable = true;                                                       │          desc.ScissorEnable = true;                                                      
        desc.DepthClipEnable = true;                                                     │          desc.DepthClipEnable = true;                                                    
        bd->pd3dDevice->CreateRasterizerState(&desc, &bd->pRasterizerState);             │          bd->pd3dDevice->CreateRasterizerState(&desc, &bd->pRasterizerState);            
    }                                                                                    │      }                                                                                   
                                                                                         │                                                                                          
    // Create depth-stencil State                                                        │      // Create depth-stencil State                                                       
    {                                                                                    │      {                                                                                   
        D3D10_DEPTH_STENCIL_DESC desc;                                                   │          D3D11_DEPTH_STENCIL_DESC desc;                                                  
        ZeroMemory(&desc, sizeof(desc));                                                 │          ZeroMemory(&desc, sizeof(desc));                                                
        desc.DepthEnable = false;                                                        │          desc.DepthEnable = false;                                                       
        desc.DepthWriteMask = D3D10_DEPTH_WRITE_MASK_ALL;                                │          desc.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ALL;                               
        desc.DepthFunc = D3D10_COMPARISON_ALWAYS;                                        │          desc.DepthFunc = D3D11_COMPARISON_ALWAYS;                                       
        desc.StencilEnable = false;                                                      │          desc.StencilEnable = false;                                                     
        desc.FrontFace.StencilFailOp = desc.FrontFace.StencilDepthFailOp = desc.FrontFac │          desc.FrontFace.StencilFailOp = desc.FrontFace.StencilDepthFailOp = desc.FrontFac
        desc.FrontFace.StencilFunc = D3D10_COMPARISON_ALWAYS;                            │          desc.FrontFace.StencilFunc = D3D11_COMPARISON_ALWAYS;                           
        desc.BackFace = desc.FrontFace;                                                  │          desc.BackFace = desc.FrontFace;                                                 
        bd->pd3dDevice->CreateDepthStencilState(&desc, &bd->pDepthStencilState);         │          bd->pd3dDevice->CreateDepthStencilState(&desc, &bd->pDepthStencilState);        
    }                                                                                    │      }                                                                                   
                                                                                         │                                                                                          
    ImGui_ImplDX10_CreateFontsTexture();                                                 │      ImGui_ImplDX11_CreateFontsTexture();                                                
                                                                                         │                                                                                          
    return true;                                                                         │      return true;                                                                        
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/examples/example_win32_directx11/main.cpp:26                                      │ imgui/examples/example_win32_directx9/main.cpp:24                                        
                                                                                         │                                                                                          
    // Create application window                                                         │      // Create application window                                                        
    //ImGui_ImplWin32_EnableDpiAwareness();                                              │      //ImGui_ImplWin32_EnableDpiAwareness();                                             
    WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(N │      WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(N
    ::RegisterClassEx(&wc);                                                              │      ::RegisterClassEx(&wc);                                                             
    HWND hwnd = ::CreateWindow(wc.lpszClassName, _T("Dear ImGui DirectX11 Example"), WS_ │      HWND hwnd = ::CreateWindow(wc.lpszClassName, _T("Dear ImGui DirectX9 Example"), WS_O
                                                                                         │                                                                                          
    // Initialize Direct3D                                                               │      // Initialize Direct3D                                                              
    if (!CreateDeviceD3D(hwnd))                                                          │      if (!CreateDeviceD3D(hwnd))                                                         
    {                                                                                    │      {                                                                                   
        CleanupDeviceD3D();                                                              │          CleanupDeviceD3D();                                                             
        ::UnregisterClass(wc.lpszClassName, wc.hInstance);                               │          ::UnregisterClass(wc.lpszClassName, wc.hInstance);                              
        return 1;                                                                        │          return 1;                                                                       
    }                                                                                    │      }                                                                                   
                                                                                         │                                                                                          
    // Show the window                                                                   │      // Show the window                                                                  
    ::ShowWindow(hwnd, SW_SHOWDEFAULT);                                                  │      ::ShowWindow(hwnd, SW_SHOWDEFAULT);                                                 
    ::UpdateWindow(hwnd);                                                                │      ::UpdateWindow(hwnd);                                                               
                                                                                         │                                                                                          
    // Setup Dear ImGui context                                                          │      // Setup Dear ImGui context                                                         
    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 Contr │      //io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;     // Enable Keyboard Contr
    //io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad;      // Enable Gamepad Contro │      //io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad;      // Enable Gamepad Contro
                                                                                         │                                                                                          
    // Setup Dear ImGui style                                                            │      // Setup Dear ImGui style                                                           
    ImGui::StyleColorsDark();                                                            │      ImGui::StyleColorsDark();                                                           
    //ImGui::StyleColorsClassic();                                                       │      //ImGui::StyleColorsClassic();                                                      
                                                                                         │                                                                                          
    // Setup Platform/Renderer backends                                                  │      // Setup Platform/Renderer backends                                                 
    ImGui_ImplWin32_Init(hwnd);                                                          │      ImGui_ImplWin32_Init(hwnd);                                                         
    ImGui_ImplDX11_Init(g_pd3dDevice, g_pd3dDeviceContext);                              │      ImGui_ImplDX9_Init(g_pd3dDevice);                                                   
                                                                                         │                                                                                          
    // Load Fonts                                                                        │      // Load Fonts                                                                       
    // - If no fonts are loaded, dear imgui will use the default font. You can also load │      // - If no fonts are loaded, dear imgui will use the default font. You can also load
    // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to │      // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to
    // - If the file cannot be loaded, the function will return NULL. Please handle thos │      // - If the file cannot be loaded, the function will return NULL. Please handle thos
    // - The fonts will be rasterized at a given size (w/ oversampling) and stored into  │      // - The fonts will be rasterized at a given size (w/ oversampling) and stored into 
    // - Read 'docs/FONTS.md' for more instructions and details.                         │      // - Read 'docs/FONTS.md' for more instructions and details.                        
    // - Remember that in C/C++ if you want to include a backslash \ in a string literal │      // - Remember that in C/C++ if you want to include a backslash \ in a string literal
    //io.Fonts->AddFontDefault();                                                        │      //io.Fonts->AddFontDefault();                                                       
    //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f);         │      //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/Cousine-Regular.ttf", 15.0f);      
    //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);             │      //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);            
    //io.Fonts->AddFontFromFileTTF("../../misc/fonts/ProggyTiny.ttf", 10.0f);            │      //io.Fonts->AddFontFromFileTTF("../../misc/fonts/ProggyTiny.ttf", 10.0f);           
    //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18 │      //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18
    //IM_ASSERT(font != NULL);                                                           │      //IM_ASSERT(font != NULL);                                                          
                                                                                         │                                                                                          
    // Our state                                                                         │      // Our state                                                                        
    bool show_demo_window = true;                                                        │      bool show_demo_window = true;                                                       
    bool show_another_window = false;                                                    │      bool show_another_window = false;                                                   
    ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);                             │      ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);                            
                                                                                         │                                                                                          
    // Main loop                                                                         │      // Main loop                                                                        
    bool done = false;                                                                   │      bool done = false;                                                                  
    while (!done)                                                                        │      while (!done)                                                                       
    {                                                                                    │      {                                                                                   
        // Poll and handle messages (inputs, window resize, etc.)                        │          // Poll and handle messages (inputs, window resize, etc.)                       
        // See the WndProc() function below for our to dispatch events to the Win32 back │          // See the WndProc() function below for our to dispatch events to the Win32 back
        MSG msg;                                                                         │          MSG msg;                                                                        
        while (::PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))                             │          while (::PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))                            
        {                                                                                │          {                                                                               
            ::TranslateMessage(&msg);                                                    │              ::TranslateMessage(&msg);                                                   
            ::DispatchMessage(&msg);                                                     │              ::DispatchMessage(&msg);                                                    
            if (msg.message == WM_QUIT)                                                  │              if (msg.message == WM_QUIT)                                                 
                done = true;                                                             │                  done = true;                                                            
        }                                                                                │          }                                                                               
        if (done)                                                                        │          if (done)                                                                       
            break;                                                                       │              break;                                                                      
                                                                                         │                                                                                          
        // Start the Dear ImGui frame                                                    │          // Start the Dear ImGui frame                                                   
        ImGui_ImplDX11_NewFrame();                                                       │          ImGui_ImplDX9_NewFrame();                                                       
        ImGui_ImplWin32_NewFrame();                                                      │          ImGui_ImplWin32_NewFrame();                                                     
        ImGui::NewFrame();                                                               │          ImGui::NewFrame();                                                              
                                                                                         │                                                                                          
        // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWin │          // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWin
        if (show_demo_window)                                                            │          if (show_demo_window)                                                           
            ImGui::ShowDemoWindow(&show_demo_window);                                    │              ImGui::ShowDemoWindow(&show_demo_window);                                   
                                                                                         │                                                                                          
        // 2. Show a simple window that we create ourselves. We use a Begin/End pair to  │          // 2. Show a simple window that we create ourselves. We use a Begin/End pair to 
        {                                                                                │          {                                                                               
            static float f = 0.0f;                                                       │              static float f = 0.0f;                                                      
            static int counter = 0;                                                      │              static int counter = 0;                                                     
                                                                                         │                                                                                          
            ImGui::Begin("Hello, world!");                          // Create a window c │              ImGui::Begin("Hello, world!");                          // Create a window c
                                                                                         │                                                                                          
            ImGui::Text("This is some useful text.");               // Display some text │              ImGui::Text("This is some useful text.");               // Display some text
            ImGui::Checkbox("Demo Window", &show_demo_window);      // Edit bools storin │              ImGui::Checkbox("Demo Window", &show_demo_window);      // Edit bools storin
            ImGui::Checkbox("Another Window", &show_another_window);                     │              ImGui::Checkbox("Another Window", &show_another_window);                    
                                                                                         │                                                                                          
            ImGui::SliderFloat("float", &f, 0.0f, 1.0f);            // Edit 1 float usin │              ImGui::SliderFloat("float", &f, 0.0f, 1.0f);            // Edit 1 float usin
            ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats rep │              ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats rep
                                                                                         │                                                                                          
            if (ImGui::Button("Button"))                            // Buttons return tr │              if (ImGui::Button("Button"))                            // Buttons return tr
                counter++;                                                               │                  counter++;                                                              
            ImGui::SameLine();                                                           │              ImGui::SameLine();                                                          
            ImGui::Text("counter = %d", counter);                                        │              ImGui::Text("counter = %d", counter);                                       
                                                                                         │                                                                                          
            ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui: │              ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui:
            ImGui::End();                                                                │              ImGui::End();                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // 3. Show another simple window.                                                │          // 3. Show another simple window.                                               
        if (show_another_window)                                                         │          if (show_another_window)                                                        
        {                                                                                │          {                                                                               
            ImGui::Begin("Another Window", &show_another_window);   // Pass a pointer to │              ImGui::Begin("Another Window", &show_another_window);   // Pass a pointer to
            ImGui::Text("Hello from another window!");                                   │              ImGui::Text("Hello from another window!");                                  
            if (ImGui::Button("Close Me"))                                               │              if (ImGui::Button("Close Me"))                                              
                show_another_window = false;                                             │                  show_another_window = false;                                            
            ImGui::End();                                                                │              ImGui::End();                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // Rendering                                                                     │          // Rendering                                                                    
        ImGui::Render();                                                                 │          ImGui::EndFrame();                                                              
        const float clear_color_with_alpha[4] = { clear_color.x * clear_color.w, clear_c │          g_pd3dDevice->SetRenderState(D3DRS_ZENABLE, FALSE);                             
        g_pd3dDeviceContext->OMSetRenderTargets(1, &g_mainRenderTargetView, NULL);       │          g_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);                    
        g_pd3dDeviceContext->ClearRenderTargetView(g_mainRenderTargetView, clear_color_w │          g_pd3dDevice->SetRenderState(D3DRS_SCISSORTESTENABLE, FALSE);                   
        ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData());                             │          D3DCOLOR clear_col_dx = D3DCOLOR_RGBA((int)(clear_color.x*clear_color.w*255.0f),
                                                                                         │          g_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, clear_col_dx, 1
                                                                                         │          if (g_pd3dDevice->BeginScene() >= 0)                                            
                                                                                         │          {                                                                               
                                                                                         │              ImGui::Render();                                                            
                                                                                         │              ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());                         
                                                                                         │              g_pd3dDevice->EndScene();                                                   
                                                                                         │          }                                                                               
                                                                                         │          HRESULT result = g_pd3dDevice->Present(NULL, NULL, NULL, NULL);                 
                                                                                         │                                                                                          
        g_pSwapChain->Present(1, 0); // Present with vsync                               │          // Handle loss of D3D9 device                                                   
        //g_pSwapChain->Present(0, 0); // Present without vsync                          │          if (result == D3DERR_DEVICELOST && g_pd3dDevice->TestCooperativeLevel() == D3DER
                                                                                         │              ResetDevice();                                                              
    }                                                                                    │      }                                                                                   
                                                                                         │                                                                                          
    // Cleanup                                                                           │      ImGui_ImplDX9_Shutdown();                                                           
    ImGui_ImplDX11_Shutdown();                                                           │                                                                                          
    ImGui_ImplWin32_Shutdown();                                                          │      ImGui_ImplWin32_Shutdown();                                                         
    ImGui::DestroyContext();                                                             │      ImGui::DestroyContext();                                                            
                                                                                         │                                                                                          
    CleanupDeviceD3D();                                                                  │      CleanupDeviceD3D();                                                                 
    ::DestroyWindow(hwnd);                                                               │      ::DestroyWindow(hwnd);                                                              
    ::UnregisterClass(wc.lpszClassName, wc.hInstance);                                   │      ::UnregisterClass(wc.lpszClassName, wc.hInstance);                                  
                                                                                         │                                                                                          
    return 0;                                                                            │      return 0;                                                                           
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/examples/example_win32_directx10/main.cpp:26                                      │ imgui/examples/example_win32_directx9/main.cpp:24                                        
                                                                                         │                                                                                          
    // Create application window                                                         │      // Create application window                                                        
    //ImGui_ImplWin32_EnableDpiAwareness();                                              │      //ImGui_ImplWin32_EnableDpiAwareness();                                             
    WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(N │      WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(N
    ::RegisterClassEx(&wc);                                                              │      ::RegisterClassEx(&wc);                                                             
    HWND hwnd = ::CreateWindow(wc.lpszClassName, _T("Dear ImGui DirectX10 Example"), WS_ │      HWND hwnd = ::CreateWindow(wc.lpszClassName, _T("Dear ImGui DirectX9 Example"), WS_O
                                                                                         │                                                                                          
    // Initialize Direct3D                                                               │      // Initialize Direct3D                                                              
    if (!CreateDeviceD3D(hwnd))                                                          │      if (!CreateDeviceD3D(hwnd))                                                         
    {                                                                                    │      {                                                                                   
        CleanupDeviceD3D();                                                              │          CleanupDeviceD3D();                                                             
        ::UnregisterClass(wc.lpszClassName, wc.hInstance);                               │          ::UnregisterClass(wc.lpszClassName, wc.hInstance);                              
        return 1;                                                                        │          return 1;                                                                       
    }                                                                                    │      }                                                                                   
                                                                                         │                                                                                          
    // Show the window                                                                   │      // Show the window                                                                  
    ::ShowWindow(hwnd, SW_SHOWDEFAULT);                                                  │      ::ShowWindow(hwnd, SW_SHOWDEFAULT);                                                 
    ::UpdateWindow(hwnd);                                                                │      ::UpdateWindow(hwnd);                                                               
                                                                                         │                                                                                          
    // Setup Dear ImGui context                                                          │      // Setup Dear ImGui context                                                         
    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 Contr │      //io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;     // Enable Keyboard Contr
    //io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad;      // Enable Gamepad Contro │      //io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad;      // Enable Gamepad Contro
                                                                                         │                                                                                          
    // Setup Dear ImGui style                                                            │      // Setup Dear ImGui style                                                           
    ImGui::StyleColorsDark();                                                            │      ImGui::StyleColorsDark();                                                           
    //ImGui::StyleColorsClassic();                                                       │      //ImGui::StyleColorsClassic();                                                      
                                                                                         │                                                                                          
    // Setup Platform/Renderer backends                                                  │      // Setup Platform/Renderer backends                                                 
    ImGui_ImplWin32_Init(hwnd);                                                          │      ImGui_ImplWin32_Init(hwnd);                                                         
    ImGui_ImplDX10_Init(g_pd3dDevice);                                                   │      ImGui_ImplDX9_Init(g_pd3dDevice);                                                   
                                                                                         │                                                                                          
    // Load Fonts                                                                        │      // Load Fonts                                                                       
    // - If no fonts are loaded, dear imgui will use the default font. You can also load │      // - If no fonts are loaded, dear imgui will use the default font. You can also load
    // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to │      // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to
    // - If the file cannot be loaded, the function will return NULL. Please handle thos │      // - If the file cannot be loaded, the function will return NULL. Please handle thos
    // - The fonts will be rasterized at a given size (w/ oversampling) and stored into  │      // - The fonts will be rasterized at a given size (w/ oversampling) and stored into 
    // - Read 'docs/FONTS.md' for more instructions and details.                         │      // - Read 'docs/FONTS.md' for more instructions and details.                        
    // - Remember that in C/C++ if you want to include a backslash \ in a string literal │      // - Remember that in C/C++ if you want to include a backslash \ in a string literal
    //io.Fonts->AddFontDefault();                                                        │      //io.Fonts->AddFontDefault();                                                       
    //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f);         │      //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/Cousine-Regular.ttf", 15.0f);      
    //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);             │      //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);            
    //io.Fonts->AddFontFromFileTTF("../../misc/fonts/ProggyTiny.ttf", 10.0f);            │      //io.Fonts->AddFontFromFileTTF("../../misc/fonts/ProggyTiny.ttf", 10.0f);           
    //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18 │      //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18
    //IM_ASSERT(font != NULL);                                                           │      //IM_ASSERT(font != NULL);                                                          
                                                                                         │                                                                                          
    // Our state                                                                         │      // Our state                                                                        
    bool show_demo_window = true;                                                        │      bool show_demo_window = true;                                                       
    bool show_another_window = false;                                                    │      bool show_another_window = false;                                                   
    ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);                             │      ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);                            
                                                                                         │                                                                                          
    // Main loop                                                                         │      // Main loop                                                                        
    bool done = false;                                                                   │      bool done = false;                                                                  
    while (!done)                                                                        │      while (!done)                                                                       
    {                                                                                    │      {                                                                                   
        // Poll and handle messages (inputs, window resize, etc.)                        │          // Poll and handle messages (inputs, window resize, etc.)                       
        // See the WndProc() function below for our to dispatch events to the Win32 back │          // See the WndProc() function below for our to dispatch events to the Win32 back
        MSG msg;                                                                         │          MSG msg;                                                                        
        while (::PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))                             │          while (::PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))                            
        {                                                                                │          {                                                                               
            ::TranslateMessage(&msg);                                                    │              ::TranslateMessage(&msg);                                                   
            ::DispatchMessage(&msg);                                                     │              ::DispatchMessage(&msg);                                                    
            if (msg.message == WM_QUIT)                                                  │              if (msg.message == WM_QUIT)                                                 
                done = true;                                                             │                  done = true;                                                            
        }                                                                                │          }                                                                               
        if (done)                                                                        │          if (done)                                                                       
            break;                                                                       │              break;                                                                      
                                                                                         │                                                                                          
        // Start the Dear ImGui frame                                                    │          // Start the Dear ImGui frame                                                   
        ImGui_ImplDX10_NewFrame();                                                       │          ImGui_ImplDX9_NewFrame();                                                       
        ImGui_ImplWin32_NewFrame();                                                      │          ImGui_ImplWin32_NewFrame();                                                     
        ImGui::NewFrame();                                                               │          ImGui::NewFrame();                                                              
                                                                                         │                                                                                          
        // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWin │          // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWin
        if (show_demo_window)                                                            │          if (show_demo_window)                                                           
            ImGui::ShowDemoWindow(&show_demo_window);                                    │              ImGui::ShowDemoWindow(&show_demo_window);                                   
                                                                                         │                                                                                          
        // 2. Show a simple window that we create ourselves. We use a Begin/End pair to  │          // 2. Show a simple window that we create ourselves. We use a Begin/End pair to 
        {                                                                                │          {                                                                               
            static float f = 0.0f;                                                       │              static float f = 0.0f;                                                      
            static int counter = 0;                                                      │              static int counter = 0;                                                     
                                                                                         │                                                                                          
            ImGui::Begin("Hello, world!");                          // Create a window c │              ImGui::Begin("Hello, world!");                          // Create a window c
                                                                                         │                                                                                          
            ImGui::Text("This is some useful text.");               // Display some text │              ImGui::Text("This is some useful text.");               // Display some text
            ImGui::Checkbox("Demo Window", &show_demo_window);      // Edit bools storin │              ImGui::Checkbox("Demo Window", &show_demo_window);      // Edit bools storin
            ImGui::Checkbox("Another Window", &show_another_window);                     │              ImGui::Checkbox("Another Window", &show_another_window);                    
                                                                                         │                                                                                          
            ImGui::SliderFloat("float", &f, 0.0f, 1.0f);            // Edit 1 float usin │              ImGui::SliderFloat("float", &f, 0.0f, 1.0f);            // Edit 1 float usin
            ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats rep │              ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats rep
                                                                                         │                                                                                          
            if (ImGui::Button("Button"))                            // Buttons return tr │              if (ImGui::Button("Button"))                            // Buttons return tr
                counter++;                                                               │                  counter++;                                                              
            ImGui::SameLine();                                                           │              ImGui::SameLine();                                                          
            ImGui::Text("counter = %d", counter);                                        │              ImGui::Text("counter = %d", counter);                                       
                                                                                         │                                                                                          
            ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui: │              ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui:
            ImGui::End();                                                                │              ImGui::End();                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // 3. Show another simple window.                                                │          // 3. Show another simple window.                                               
        if (show_another_window)                                                         │          if (show_another_window)                                                        
        {                                                                                │          {                                                                               
            ImGui::Begin("Another Window", &show_another_window);   // Pass a pointer to │              ImGui::Begin("Another Window", &show_another_window);   // Pass a pointer to
            ImGui::Text("Hello from another window!");                                   │              ImGui::Text("Hello from another window!");                                  
            if (ImGui::Button("Close Me"))                                               │              if (ImGui::Button("Close Me"))                                              
                show_another_window = false;                                             │                  show_another_window = false;                                            
            ImGui::End();                                                                │              ImGui::End();                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // Rendering                                                                     │          // Rendering                                                                    
        ImGui::Render();                                                                 │          ImGui::EndFrame();                                                              
        const float clear_color_with_alpha[4] = { clear_color.x * clear_color.w, clear_c │          g_pd3dDevice->SetRenderState(D3DRS_ZENABLE, FALSE);                             
        g_pd3dDevice->OMSetRenderTargets(1, &g_mainRenderTargetView, NULL);              │          g_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);                    
        g_pd3dDevice->ClearRenderTargetView(g_mainRenderTargetView, clear_color_with_alp │          g_pd3dDevice->SetRenderState(D3DRS_SCISSORTESTENABLE, FALSE);                   
        ImGui_ImplDX10_RenderDrawData(ImGui::GetDrawData());                             │          D3DCOLOR clear_col_dx = D3DCOLOR_RGBA((int)(clear_color.x*clear_color.w*255.0f),
                                                                                         │          g_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, clear_col_dx, 1
                                                                                         │          if (g_pd3dDevice->BeginScene() >= 0)                                            
                                                                                         │          {                                                                               
                                                                                         │              ImGui::Render();                                                            
                                                                                         │              ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());                         
                                                                                         │              g_pd3dDevice->EndScene();                                                   
                                                                                         │          }                                                                               
                                                                                         │          HRESULT result = g_pd3dDevice->Present(NULL, NULL, NULL, NULL);                 
                                                                                         │                                                                                          
        g_pSwapChain->Present(1, 0); // Present with vsync                               │          // Handle loss of D3D9 device                                                   
        //g_pSwapChain->Present(0, 0); // Present without vsync                          │          if (result == D3DERR_DEVICELOST && g_pd3dDevice->TestCooperativeLevel() == D3DER
                                                                                         │              ResetDevice();                                                              
    }                                                                                    │      }                                                                                   
                                                                                         │                                                                                          
    ImGui_ImplDX10_Shutdown();                                                           │      ImGui_ImplDX9_Shutdown();                                                           
    ImGui_ImplWin32_Shutdown();                                                          │      ImGui_ImplWin32_Shutdown();                                                         
    ImGui::DestroyContext();                                                             │      ImGui::DestroyContext();                                                            
                                                                                         │                                                                                          
    CleanupDeviceD3D();                                                                  │      CleanupDeviceD3D();                                                                 
    ::DestroyWindow(hwnd);                                                               │      ::DestroyWindow(hwnd);                                                              
    ::UnregisterClass(wc.lpszClassName, wc.hInstance);                                   │      ::UnregisterClass(wc.lpszClassName, wc.hInstance);                                  
                                                                                         │                                                                                          
    return 0;                                                                            │      return 0;                                                                           
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/examples/example_win32_directx10/main.cpp:26                                      │ imgui/examples/example_win32_directx11/main.cpp:26                                       
                                                                                         │                                                                                          
    // Create application window                                                         │      // Create application window                                                        
    //ImGui_ImplWin32_EnableDpiAwareness();                                              │      //ImGui_ImplWin32_EnableDpiAwareness();                                             
    WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(N │      WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(N
    ::RegisterClassEx(&wc);                                                              │      ::RegisterClassEx(&wc);                                                             
    HWND hwnd = ::CreateWindow(wc.lpszClassName, _T("Dear ImGui DirectX10 Example"), WS_ │      HWND hwnd = ::CreateWindow(wc.lpszClassName, _T("Dear ImGui DirectX11 Example"), WS_
                                                                                         │                                                                                          
    // Initialize Direct3D                                                               │      // Initialize Direct3D                                                              
    if (!CreateDeviceD3D(hwnd))                                                          │      if (!CreateDeviceD3D(hwnd))                                                         
    {                                                                                    │      {                                                                                   
        CleanupDeviceD3D();                                                              │          CleanupDeviceD3D();                                                             
        ::UnregisterClass(wc.lpszClassName, wc.hInstance);                               │          ::UnregisterClass(wc.lpszClassName, wc.hInstance);                              
        return 1;                                                                        │          return 1;                                                                       
    }                                                                                    │      }                                                                                   
                                                                                         │                                                                                          
    // Show the window                                                                   │      // Show the window                                                                  
    ::ShowWindow(hwnd, SW_SHOWDEFAULT);                                                  │      ::ShowWindow(hwnd, SW_SHOWDEFAULT);                                                 
    ::UpdateWindow(hwnd);                                                                │      ::UpdateWindow(hwnd);                                                               
                                                                                         │                                                                                          
    // Setup Dear ImGui context                                                          │      // Setup Dear ImGui context                                                         
    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 Contr │      //io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;     // Enable Keyboard Contr
    //io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad;      // Enable Gamepad Contro │      //io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad;      // Enable Gamepad Contro
                                                                                         │                                                                                          
    // Setup Dear ImGui style                                                            │      // Setup Dear ImGui style                                                           
    ImGui::StyleColorsDark();                                                            │      ImGui::StyleColorsDark();                                                           
    //ImGui::StyleColorsClassic();                                                       │      //ImGui::StyleColorsClassic();                                                      
                                                                                         │                                                                                          
    // Setup Platform/Renderer backends                                                  │      // Setup Platform/Renderer backends                                                 
    ImGui_ImplWin32_Init(hwnd);                                                          │      ImGui_ImplWin32_Init(hwnd);                                                         
    ImGui_ImplDX10_Init(g_pd3dDevice);                                                   │      ImGui_ImplDX11_Init(g_pd3dDevice, g_pd3dDeviceContext);                             
                                                                                         │                                                                                          
    // Load Fonts                                                                        │      // Load Fonts                                                                       
    // - If no fonts are loaded, dear imgui will use the default font. You can also load │      // - If no fonts are loaded, dear imgui will use the default font. You can also load
    // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to │      // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to
    // - If the file cannot be loaded, the function will return NULL. Please handle thos │      // - If the file cannot be loaded, the function will return NULL. Please handle thos
    // - The fonts will be rasterized at a given size (w/ oversampling) and stored into  │      // - The fonts will be rasterized at a given size (w/ oversampling) and stored into 
    // - Read 'docs/FONTS.md' for more instructions and details.                         │      // - Read 'docs/FONTS.md' for more instructions and details.                        
    // - Remember that in C/C++ if you want to include a backslash \ in a string literal │      // - Remember that in C/C++ if you want to include a backslash \ in a string literal
    //io.Fonts->AddFontDefault();                                                        │      //io.Fonts->AddFontDefault();                                                       
    //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f);         │      //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/Cousine-Regular.ttf", 15.0f);      
    //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);             │      //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);            
    //io.Fonts->AddFontFromFileTTF("../../misc/fonts/ProggyTiny.ttf", 10.0f);            │      //io.Fonts->AddFontFromFileTTF("../../misc/fonts/ProggyTiny.ttf", 10.0f);           
    //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18 │      //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18
    //IM_ASSERT(font != NULL);                                                           │      //IM_ASSERT(font != NULL);                                                          
                                                                                         │                                                                                          
    // Our state                                                                         │      // Our state                                                                        
    bool show_demo_window = true;                                                        │      bool show_demo_window = true;                                                       
    bool show_another_window = false;                                                    │      bool show_another_window = false;                                                   
    ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);                             │      ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);                            
                                                                                         │                                                                                          
    // Main loop                                                                         │      // Main loop                                                                        
    bool done = false;                                                                   │      bool done = false;                                                                  
    while (!done)                                                                        │      while (!done)                                                                       
    {                                                                                    │      {                                                                                   
        // Poll and handle messages (inputs, window resize, etc.)                        │          // Poll and handle messages (inputs, window resize, etc.)                       
        // See the WndProc() function below for our to dispatch events to the Win32 back │          // See the WndProc() function below for our to dispatch events to the Win32 back
        MSG msg;                                                                         │          MSG msg;                                                                        
        while (::PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))                             │          while (::PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))                            
        {                                                                                │          {                                                                               
            ::TranslateMessage(&msg);                                                    │              ::TranslateMessage(&msg);                                                   
            ::DispatchMessage(&msg);                                                     │              ::DispatchMessage(&msg);                                                    
            if (msg.message == WM_QUIT)                                                  │              if (msg.message == WM_QUIT)                                                 
                done = true;                                                             │                  done = true;                                                            
        }                                                                                │          }                                                                               
        if (done)                                                                        │          if (done)                                                                       
            break;                                                                       │              break;                                                                      
                                                                                         │                                                                                          
        // Start the Dear ImGui frame                                                    │          // Start the Dear ImGui frame                                                   
        ImGui_ImplDX10_NewFrame();                                                       │          ImGui_ImplDX11_NewFrame();                                                      
        ImGui_ImplWin32_NewFrame();                                                      │          ImGui_ImplWin32_NewFrame();                                                     
        ImGui::NewFrame();                                                               │          ImGui::NewFrame();                                                              
                                                                                         │                                                                                          
        // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWin │          // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWin
        if (show_demo_window)                                                            │          if (show_demo_window)                                                           
            ImGui::ShowDemoWindow(&show_demo_window);                                    │              ImGui::ShowDemoWindow(&show_demo_window);                                   
                                                                                         │                                                                                          
        // 2. Show a simple window that we create ourselves. We use a Begin/End pair to  │          // 2. Show a simple window that we create ourselves. We use a Begin/End pair to 
        {                                                                                │          {                                                                               
            static float f = 0.0f;                                                       │              static float f = 0.0f;                                                      
            static int counter = 0;                                                      │              static int counter = 0;                                                     
                                                                                         │                                                                                          
            ImGui::Begin("Hello, world!");                          // Create a window c │              ImGui::Begin("Hello, world!");                          // Create a window c
                                                                                         │                                                                                          
            ImGui::Text("This is some useful text.");               // Display some text │              ImGui::Text("This is some useful text.");               // Display some text
            ImGui::Checkbox("Demo Window", &show_demo_window);      // Edit bools storin │              ImGui::Checkbox("Demo Window", &show_demo_window);      // Edit bools storin
            ImGui::Checkbox("Another Window", &show_another_window);                     │              ImGui::Checkbox("Another Window", &show_another_window);                    
                                                                                         │                                                                                          
            ImGui::SliderFloat("float", &f, 0.0f, 1.0f);            // Edit 1 float usin │              ImGui::SliderFloat("float", &f, 0.0f, 1.0f);            // Edit 1 float usin
            ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats rep │              ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats rep
                                                                                         │                                                                                          
            if (ImGui::Button("Button"))                            // Buttons return tr │              if (ImGui::Button("Button"))                            // Buttons return tr
                counter++;                                                               │                  counter++;                                                              
            ImGui::SameLine();                                                           │              ImGui::SameLine();                                                          
            ImGui::Text("counter = %d", counter);                                        │              ImGui::Text("counter = %d", counter);                                       
                                                                                         │                                                                                          
            ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui: │              ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui:
            ImGui::End();                                                                │              ImGui::End();                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // 3. Show another simple window.                                                │          // 3. Show another simple window.                                               
        if (show_another_window)                                                         │          if (show_another_window)                                                        
        {                                                                                │          {                                                                               
            ImGui::Begin("Another Window", &show_another_window);   // Pass a pointer to │              ImGui::Begin("Another Window", &show_another_window);   // Pass a pointer to
            ImGui::Text("Hello from another window!");                                   │              ImGui::Text("Hello from another window!");                                  
            if (ImGui::Button("Close Me"))                                               │              if (ImGui::Button("Close Me"))                                              
                show_another_window = false;                                             │                  show_another_window = false;                                            
            ImGui::End();                                                                │              ImGui::End();                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // Rendering                                                                     │          // Rendering                                                                    
        ImGui::Render();                                                                 │          ImGui::Render();                                                                
        const float clear_color_with_alpha[4] = { clear_color.x * clear_color.w, clear_c │          const float clear_color_with_alpha[4] = { clear_color.x * clear_color.w, clear_c
        g_pd3dDevice->OMSetRenderTargets(1, &g_mainRenderTargetView, NULL);              │          g_pd3dDeviceContext->OMSetRenderTargets(1, &g_mainRenderTargetView, NULL);      
        g_pd3dDevice->ClearRenderTargetView(g_mainRenderTargetView, clear_color_with_alp │          g_pd3dDeviceContext->ClearRenderTargetView(g_mainRenderTargetView, clear_color_w
        ImGui_ImplDX10_RenderDrawData(ImGui::GetDrawData());                             │          ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData());                            
                                                                                         │                                                                                          
        g_pSwapChain->Present(1, 0); // Present with vsync                               │          g_pSwapChain->Present(1, 0); // Present with vsync                              
        //g_pSwapChain->Present(0, 0); // Present without vsync                          │          //g_pSwapChain->Present(0, 0); // Present without vsync                         
    }                                                                                    │      }                                                                                   
                                                                                         │                                                                                          
    ImGui_ImplDX10_Shutdown();                                                           │      // Cleanup                                                                          
                                                                                         │      ImGui_ImplDX11_Shutdown();                                                          
    ImGui_ImplWin32_Shutdown();                                                          │      ImGui_ImplWin32_Shutdown();                                                         
    ImGui::DestroyContext();                                                             │      ImGui::DestroyContext();                                                            
                                                                                         │                                                                                          
    CleanupDeviceD3D();                                                                  │      CleanupDeviceD3D();                                                                 
    ::DestroyWindow(hwnd);                                                               │      ::DestroyWindow(hwnd);                                                              
    ::UnregisterClass(wc.lpszClassName, wc.hInstance);                                   │      ::UnregisterClass(wc.lpszClassName, wc.hInstance);                                  
                                                                                         │                                                                                          
    return 0;                                                                            │      return 0;                                                                           
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/examples/example_glfw_vulkan/main.cpp:467                                         │ imgui/examples/example_sdl_vulkan/main.cpp:460                                           
                                                                                         │                                                                                          
        // Poll and handle events (inputs, window resize, etc.)                          │          // Poll and handle events (inputs, window resize, etc.)                         
        // You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if │          // You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if
        // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your  │          // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your 
        // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to │          // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to
        // Generally you may always pass all inputs to dear imgui, and hide them from yo │          // Generally you may always pass all inputs to dear imgui, and hide them from yo
        glfwPollEvents();                                                                │          SDL_Event event;                                                                
                                                                                         │          while (SDL_PollEvent(&event))                                                   
                                                                                         │          {                                                                               
                                                                                         │              ImGui_ImplSDL2_ProcessEvent(&event);                                        
                                                                                         │              if (event.type == SDL_QUIT)                                                 
                                                                                         │                  done = true;                                                            
                                                                                         │              if (event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_C
                                                                                         │                  done = true;                                                            
                                                                                         │          }                                                                               
                                                                                         │                                                                                          
        // Resize swap chain?                                                            │          // Resize swap chain?                                                           
        if (g_SwapChainRebuild)                                                          │          if (g_SwapChainRebuild)                                                         
        {                                                                                │          {                                                                               
            int width, height;                                                           │              int width, height;                                                          
            glfwGetFramebufferSize(window, &width, &height);                             │              SDL_GetWindowSize(window, &width, &height);                                 
            if (width > 0 && height > 0)                                                 │              if (width > 0 && height > 0)                                                
            {                                                                            │              {                                                                           
                ImGui_ImplVulkan_SetMinImageCount(g_MinImageCount);                      │                  ImGui_ImplVulkan_SetMinImageCount(g_MinImageCount);                     
                ImGui_ImplVulkanH_CreateOrResizeWindow(g_Instance, g_PhysicalDevice, g_D │                  ImGui_ImplVulkanH_CreateOrResizeWindow(g_Instance, g_PhysicalDevice, g_D
                g_MainWindowData.FrameIndex = 0;                                         │                  g_MainWindowData.FrameIndex = 0;                                        
                g_SwapChainRebuild = false;                                              │                  g_SwapChainRebuild = false;                                             
            }                                                                            │              }                                                                           
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // Start the Dear ImGui frame                                                    │          // Start the Dear ImGui frame                                                   
        ImGui_ImplVulkan_NewFrame();                                                     │          ImGui_ImplVulkan_NewFrame();                                                    
        ImGui_ImplGlfw_NewFrame();                                                       │          ImGui_ImplSDL2_NewFrame();                                                      
        ImGui::NewFrame();                                                               │          ImGui::NewFrame();                                                              
                                                                                         │                                                                                          
        // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWin │          // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWin
        if (show_demo_window)                                                            │          if (show_demo_window)                                                           
            ImGui::ShowDemoWindow(&show_demo_window);                                    │              ImGui::ShowDemoWindow(&show_demo_window);                                   
                                                                                         │                                                                                          
        // 2. Show a simple window that we create ourselves. We use a Begin/End pair to  │          // 2. Show a simple window that we create ourselves. We use a Begin/End pair to 
        {                                                                                │          {                                                                               
            static float f = 0.0f;                                                       │              static float f = 0.0f;                                                      
            static int counter = 0;                                                      │              static int counter = 0;                                                     
                                                                                         │                                                                                          
            ImGui::Begin("Hello, world!");                          // Create a window c │              ImGui::Begin("Hello, world!");                          // Create a window c
                                                                                         │                                                                                          
            ImGui::Text("This is some useful text.");               // Display some text │              ImGui::Text("This is some useful text.");               // Display some text
            ImGui::Checkbox("Demo Window", &show_demo_window);      // Edit bools storin │              ImGui::Checkbox("Demo Window", &show_demo_window);      // Edit bools storin
            ImGui::Checkbox("Another Window", &show_another_window);                     │              ImGui::Checkbox("Another Window", &show_another_window);                    
                                                                                         │                                                                                          
            ImGui::SliderFloat("float", &f, 0.0f, 1.0f);            // Edit 1 float usin │              ImGui::SliderFloat("float", &f, 0.0f, 1.0f);            // Edit 1 float usin
            ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats rep │              ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats rep
                                                                                         │                                                                                          
            if (ImGui::Button("Button"))                            // Buttons return tr │              if (ImGui::Button("Button"))                            // Buttons return tr
                counter++;                                                               │                  counter++;                                                              
            ImGui::SameLine();                                                           │              ImGui::SameLine();                                                          
            ImGui::Text("counter = %d", counter);                                        │              ImGui::Text("counter = %d", counter);                                       
                                                                                         │                                                                                          
            ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui: │              ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui:
            ImGui::End();                                                                │              ImGui::End();                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // 3. Show another simple window.                                                │          // 3. Show another simple window.                                               
        if (show_another_window)                                                         │          if (show_another_window)                                                        
        {                                                                                │          {                                                                               
            ImGui::Begin("Another Window", &show_another_window);   // Pass a pointer to │              ImGui::Begin("Another Window", &show_another_window);   // Pass a pointer to
            ImGui::Text("Hello from another window!");                                   │              ImGui::Text("Hello from another window!");                                  
            if (ImGui::Button("Close Me"))                                               │              if (ImGui::Button("Close Me"))                                              
                show_another_window = false;                                             │                  show_another_window = false;                                            
            ImGui::End();                                                                │              ImGui::End();                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // Rendering                                                                     │          // Rendering                                                                    
        ImGui::Render();                                                                 │          ImGui::Render();                                                                
        ImDrawData* draw_data = ImGui::GetDrawData();                                    │          ImDrawData* draw_data = ImGui::GetDrawData();                                   
        const bool is_minimized = (draw_data->DisplaySize.x <= 0.0f || draw_data->Displa │          const bool is_minimized = (draw_data->DisplaySize.x <= 0.0f || draw_data->Displa
        if (!is_minimized)                                                               │          if (!is_minimized)                                                              
        {                                                                                │          {                                                                               
            wd->ClearValue.color.float32[0] = clear_color.x * clear_color.w;             │              wd->ClearValue.color.float32[0] = clear_color.x * clear_color.w;            
            wd->ClearValue.color.float32[1] = clear_color.y * clear_color.w;             │              wd->ClearValue.color.float32[1] = clear_color.y * clear_color.w;            
            wd->ClearValue.color.float32[2] = clear_color.z * clear_color.w;             │              wd->ClearValue.color.float32[2] = clear_color.z * clear_color.w;            
            wd->ClearValue.color.float32[3] = clear_color.w;                             │              wd->ClearValue.color.float32[3] = clear_color.w;                            
            FrameRender(wd, draw_data);                                                  │              FrameRender(wd, draw_data);                                                 
            FramePresent(wd);                                                            │              FramePresent(wd);                                                           
        }                                                                                │          }                                                                               
    }                                                                                    │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/examples/example_sdl_opengl2/main.cpp:79                                          │ imgui/examples/example_glfw_opengl2/main.cpp:80                                          
                                                                                         │                                                                                          
        // Poll and handle events (inputs, window resize, etc.)                          │          // Poll and handle events (inputs, window resize, etc.)                         
        // You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if │          // You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if
        // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your  │          // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your 
        // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to │          // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to
        // Generally you may always pass all inputs to dear imgui, and hide them from yo │          // Generally you may always pass all inputs to dear imgui, and hide them from yo
        SDL_Event event;                                                                 │          glfwPollEvents();                                                               
        while (SDL_PollEvent(&event))                                                    │                                                                                          
        {                                                                                │                                                                                          
            ImGui_ImplSDL2_ProcessEvent(&event);                                         │                                                                                          
            if (event.type == SDL_QUIT)                                                  │                                                                                          
                done = true;                                                             │                                                                                          
            if (event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_C │                                                                                          
                done = true;                                                             │                                                                                          
        }                                                                                │                                                                                          
                                                                                         │                                                                                          
        // Start the Dear ImGui frame                                                    │          // Start the Dear ImGui frame                                                   
        ImGui_ImplOpenGL2_NewFrame();                                                    │          ImGui_ImplOpenGL2_NewFrame();                                                   
        ImGui_ImplSDL2_NewFrame();                                                       │          ImGui_ImplGlfw_NewFrame();                                                      
        ImGui::NewFrame();                                                               │          ImGui::NewFrame();                                                              
                                                                                         │                                                                                          
        // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWin │          // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWin
        if (show_demo_window)                                                            │          if (show_demo_window)                                                           
            ImGui::ShowDemoWindow(&show_demo_window);                                    │              ImGui::ShowDemoWindow(&show_demo_window);                                   
                                                                                         │                                                                                          
        // 2. Show a simple window that we create ourselves. We use a Begin/End pair to  │          // 2. Show a simple window that we create ourselves. We use a Begin/End pair to 
        {                                                                                │          {                                                                               
            static float f = 0.0f;                                                       │              static float f = 0.0f;                                                      
            static int counter = 0;                                                      │              static int counter = 0;                                                     
                                                                                         │                                                                                          
            ImGui::Begin("Hello, world!");                          // Create a window c │              ImGui::Begin("Hello, world!");                          // Create a window c
                                                                                         │                                                                                          
            ImGui::Text("This is some useful text.");               // Display some text │              ImGui::Text("This is some useful text.");               // Display some text
            ImGui::Checkbox("Demo Window", &show_demo_window);      // Edit bools storin │              ImGui::Checkbox("Demo Window", &show_demo_window);      // Edit bools storin
            ImGui::Checkbox("Another Window", &show_another_window);                     │              ImGui::Checkbox("Another Window", &show_another_window);                    
                                                                                         │                                                                                          
            ImGui::SliderFloat("float", &f, 0.0f, 1.0f);            // Edit 1 float usin │              ImGui::SliderFloat("float", &f, 0.0f, 1.0f);            // Edit 1 float usin
            ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats rep │              ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats rep
                                                                                         │                                                                                          
            if (ImGui::Button("Button"))                            // Buttons return tr │              if (ImGui::Button("Button"))                            // Buttons return tr
                counter++;                                                               │                  counter++;                                                              
            ImGui::SameLine();                                                           │              ImGui::SameLine();                                                          
            ImGui::Text("counter = %d", counter);                                        │              ImGui::Text("counter = %d", counter);                                       
                                                                                         │                                                                                          
            ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui: │              ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui:
            ImGui::End();                                                                │              ImGui::End();                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // 3. Show another simple window.                                                │          // 3. Show another simple window.                                               
        if (show_another_window)                                                         │          if (show_another_window)                                                        
        {                                                                                │          {                                                                               
            ImGui::Begin("Another Window", &show_another_window);   // Pass a pointer to │              ImGui::Begin("Another Window", &show_another_window);   // Pass a pointer to
            ImGui::Text("Hello from another window!");                                   │              ImGui::Text("Hello from another window!");                                  
            if (ImGui::Button("Close Me"))                                               │              if (ImGui::Button("Close Me"))                                              
                show_another_window = false;                                             │                  show_another_window = false;                                            
            ImGui::End();                                                                │              ImGui::End();                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // Rendering                                                                     │          // Rendering                                                                    
        ImGui::Render();                                                                 │          ImGui::Render();                                                                
        glViewport(0, 0, (int)io.DisplaySize.x, (int)io.DisplaySize.y);                  │          int display_w, display_h;                                                       
                                                                                         │          glfwGetFramebufferSize(window, &display_w, &display_h);                         
                                                                                         │          glViewport(0, 0, display_w, display_h);                                         
        glClearColor(clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear │          glClearColor(clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear
        glClear(GL_COLOR_BUFFER_BIT);                                                    │          glClear(GL_COLOR_BUFFER_BIT);                                                   
        //glUseProgram(0); // You may want this if using this code in an OpenGL 3+ conte │                                                                                          
                                                                                         │          // If you are using this code with non-legacy OpenGL header/contexts (which you 
                                                                                         │          // you may need to backup/reset/restore other state, e.g. for current shader usi
                                                                                         │          //GLint last_program;                                                           
                                                                                         │          //glGetIntegerv(GL_CURRENT_PROGRAM, &last_program);                             
                                                                                         │          //glUseProgram(0);                                                              
        ImGui_ImplOpenGL2_RenderDrawData(ImGui::GetDrawData());                          │          ImGui_ImplOpenGL2_RenderDrawData(ImGui::GetDrawData());                         
        SDL_GL_SwapWindow(window);                                                       │          //glUseProgram(last_program);                                                   
                                                                                         │                                                                                          
                                                                                         │          glfwMakeContextCurrent(window);                                                 
                                                                                         │          glfwSwapBuffers(window);                                                        
    }                                                                                    │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/examples/example_sdl_opengl3/main.cpp:101                                         │ imgui/examples/example_glfw_opengl2/main.cpp:80                                          
                                                                                         │                                                                                          
        // Poll and handle events (inputs, window resize, etc.)                          │          // Poll and handle events (inputs, window resize, etc.)                         
        // You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if │          // You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if
        // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your  │          // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your 
        // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to │          // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to
        // Generally you may always pass all inputs to dear imgui, and hide them from yo │          // Generally you may always pass all inputs to dear imgui, and hide them from yo
        SDL_Event event;                                                                 │          glfwPollEvents();                                                               
        while (SDL_PollEvent(&event))                                                    │                                                                                          
        {                                                                                │                                                                                          
            ImGui_ImplSDL2_ProcessEvent(&event);                                         │                                                                                          
            if (event.type == SDL_QUIT)                                                  │                                                                                          
                done = true;                                                             │                                                                                          
            if (event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_C │                                                                                          
                done = true;                                                             │                                                                                          
        }                                                                                │                                                                                          
                                                                                         │                                                                                          
        // Start the Dear ImGui frame                                                    │          // Start the Dear ImGui frame                                                   
        ImGui_ImplOpenGL3_NewFrame();                                                    │          ImGui_ImplOpenGL2_NewFrame();                                                   
        ImGui_ImplSDL2_NewFrame();                                                       │          ImGui_ImplGlfw_NewFrame();                                                      
        ImGui::NewFrame();                                                               │          ImGui::NewFrame();                                                              
                                                                                         │                                                                                          
        // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWin │          // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWin
        if (show_demo_window)                                                            │          if (show_demo_window)                                                           
            ImGui::ShowDemoWindow(&show_demo_window);                                    │              ImGui::ShowDemoWindow(&show_demo_window);                                   
                                                                                         │                                                                                          
        // 2. Show a simple window that we create ourselves. We use a Begin/End pair to  │          // 2. Show a simple window that we create ourselves. We use a Begin/End pair to 
        {                                                                                │          {                                                                               
            static float f = 0.0f;                                                       │              static float f = 0.0f;                                                      
            static int counter = 0;                                                      │              static int counter = 0;                                                     
                                                                                         │                                                                                          
            ImGui::Begin("Hello, world!");                          // Create a window c │              ImGui::Begin("Hello, world!");                          // Create a window c
                                                                                         │                                                                                          
            ImGui::Text("This is some useful text.");               // Display some text │              ImGui::Text("This is some useful text.");               // Display some text
            ImGui::Checkbox("Demo Window", &show_demo_window);      // Edit bools storin │              ImGui::Checkbox("Demo Window", &show_demo_window);      // Edit bools storin
            ImGui::Checkbox("Another Window", &show_another_window);                     │              ImGui::Checkbox("Another Window", &show_another_window);                    
                                                                                         │                                                                                          
            ImGui::SliderFloat("float", &f, 0.0f, 1.0f);            // Edit 1 float usin │              ImGui::SliderFloat("float", &f, 0.0f, 1.0f);            // Edit 1 float usin
            ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats rep │              ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats rep
                                                                                         │                                                                                          
            if (ImGui::Button("Button"))                            // Buttons return tr │              if (ImGui::Button("Button"))                            // Buttons return tr
                counter++;                                                               │                  counter++;                                                              
            ImGui::SameLine();                                                           │              ImGui::SameLine();                                                          
            ImGui::Text("counter = %d", counter);                                        │              ImGui::Text("counter = %d", counter);                                       
                                                                                         │                                                                                          
            ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui: │              ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui:
            ImGui::End();                                                                │              ImGui::End();                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // 3. Show another simple window.                                                │          // 3. Show another simple window.                                               
        if (show_another_window)                                                         │          if (show_another_window)                                                        
        {                                                                                │          {                                                                               
            ImGui::Begin("Another Window", &show_another_window);   // Pass a pointer to │              ImGui::Begin("Another Window", &show_another_window);   // Pass a pointer to
            ImGui::Text("Hello from another window!");                                   │              ImGui::Text("Hello from another window!");                                  
            if (ImGui::Button("Close Me"))                                               │              if (ImGui::Button("Close Me"))                                              
                show_another_window = false;                                             │                  show_another_window = false;                                            
            ImGui::End();                                                                │              ImGui::End();                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // Rendering                                                                     │          // Rendering                                                                    
        ImGui::Render();                                                                 │          ImGui::Render();                                                                
        glViewport(0, 0, (int)io.DisplaySize.x, (int)io.DisplaySize.y);                  │          int display_w, display_h;                                                       
                                                                                         │          glfwGetFramebufferSize(window, &display_w, &display_h);                         
                                                                                         │          glViewport(0, 0, display_w, display_h);                                         
        glClearColor(clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear │          glClearColor(clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear
        glClear(GL_COLOR_BUFFER_BIT);                                                    │          glClear(GL_COLOR_BUFFER_BIT);                                                   
        ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());                          │                                                                                          
        SDL_GL_SwapWindow(window);                                                       │          // If you are using this code with non-legacy OpenGL header/contexts (which you 
                                                                                         │          // you may need to backup/reset/restore other state, e.g. for current shader usi
                                                                                         │          //GLint last_program;                                                           
                                                                                         │          //glGetIntegerv(GL_CURRENT_PROGRAM, &last_program);                             
                                                                                         │          //glUseProgram(0);                                                              
                                                                                         │          ImGui_ImplOpenGL2_RenderDrawData(ImGui::GetDrawData());                         
                                                                                         │          //glUseProgram(last_program);                                                   
                                                                                         │                                                                                          
                                                                                         │          glfwMakeContextCurrent(window);                                                 
                                                                                         │          glfwSwapBuffers(window);                                                        
    }                                                                                    │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/examples/example_sdl_opengl3/main.cpp:101                                         │ imgui/examples/example_sdl_opengl2/main.cpp:79                                           
                                                                                         │                                                                                          
        // Poll and handle events (inputs, window resize, etc.)                          │          // Poll and handle events (inputs, window resize, etc.)                         
        // You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if │          // You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if
        // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your  │          // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your 
        // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to │          // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to
        // Generally you may always pass all inputs to dear imgui, and hide them from yo │          // Generally you may always pass all inputs to dear imgui, and hide them from yo
        SDL_Event event;                                                                 │          SDL_Event event;                                                                
        while (SDL_PollEvent(&event))                                                    │          while (SDL_PollEvent(&event))                                                   
        {                                                                                │          {                                                                               
            ImGui_ImplSDL2_ProcessEvent(&event);                                         │              ImGui_ImplSDL2_ProcessEvent(&event);                                        
            if (event.type == SDL_QUIT)                                                  │              if (event.type == SDL_QUIT)                                                 
                done = true;                                                             │                  done = true;                                                            
            if (event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_C │              if (event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_C
                done = true;                                                             │                  done = true;                                                            
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // Start the Dear ImGui frame                                                    │          // Start the Dear ImGui frame                                                   
        ImGui_ImplOpenGL3_NewFrame();                                                    │          ImGui_ImplOpenGL2_NewFrame();                                                   
        ImGui_ImplSDL2_NewFrame();                                                       │          ImGui_ImplSDL2_NewFrame();                                                      
        ImGui::NewFrame();                                                               │          ImGui::NewFrame();                                                              
                                                                                         │                                                                                          
        // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWin │          // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWin
        if (show_demo_window)                                                            │          if (show_demo_window)                                                           
            ImGui::ShowDemoWindow(&show_demo_window);                                    │              ImGui::ShowDemoWindow(&show_demo_window);                                   
                                                                                         │                                                                                          
        // 2. Show a simple window that we create ourselves. We use a Begin/End pair to  │          // 2. Show a simple window that we create ourselves. We use a Begin/End pair to 
        {                                                                                │          {                                                                               
            static float f = 0.0f;                                                       │              static float f = 0.0f;                                                      
            static int counter = 0;                                                      │              static int counter = 0;                                                     
                                                                                         │                                                                                          
            ImGui::Begin("Hello, world!");                          // Create a window c │              ImGui::Begin("Hello, world!");                          // Create a window c
                                                                                         │                                                                                          
            ImGui::Text("This is some useful text.");               // Display some text │              ImGui::Text("This is some useful text.");               // Display some text
            ImGui::Checkbox("Demo Window", &show_demo_window);      // Edit bools storin │              ImGui::Checkbox("Demo Window", &show_demo_window);      // Edit bools storin
            ImGui::Checkbox("Another Window", &show_another_window);                     │              ImGui::Checkbox("Another Window", &show_another_window);                    
                                                                                         │                                                                                          
            ImGui::SliderFloat("float", &f, 0.0f, 1.0f);            // Edit 1 float usin │              ImGui::SliderFloat("float", &f, 0.0f, 1.0f);            // Edit 1 float usin
            ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats rep │              ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats rep
                                                                                         │                                                                                          
            if (ImGui::Button("Button"))                            // Buttons return tr │              if (ImGui::Button("Button"))                            // Buttons return tr
                counter++;                                                               │                  counter++;                                                              
            ImGui::SameLine();                                                           │              ImGui::SameLine();                                                          
            ImGui::Text("counter = %d", counter);                                        │              ImGui::Text("counter = %d", counter);                                       
                                                                                         │                                                                                          
            ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui: │              ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui:
            ImGui::End();                                                                │              ImGui::End();                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // 3. Show another simple window.                                                │          // 3. Show another simple window.                                               
        if (show_another_window)                                                         │          if (show_another_window)                                                        
        {                                                                                │          {                                                                               
            ImGui::Begin("Another Window", &show_another_window);   // Pass a pointer to │              ImGui::Begin("Another Window", &show_another_window);   // Pass a pointer to
            ImGui::Text("Hello from another window!");                                   │              ImGui::Text("Hello from another window!");                                  
            if (ImGui::Button("Close Me"))                                               │              if (ImGui::Button("Close Me"))                                              
                show_another_window = false;                                             │                  show_another_window = false;                                            
            ImGui::End();                                                                │              ImGui::End();                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // Rendering                                                                     │          // Rendering                                                                    
        ImGui::Render();                                                                 │          ImGui::Render();                                                                
        glViewport(0, 0, (int)io.DisplaySize.x, (int)io.DisplaySize.y);                  │          glViewport(0, 0, (int)io.DisplaySize.x, (int)io.DisplaySize.y);                 
        glClearColor(clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear │          glClearColor(clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear
        glClear(GL_COLOR_BUFFER_BIT);                                                    │          glClear(GL_COLOR_BUFFER_BIT);                                                   
        ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());                          │          //glUseProgram(0); // You may want this if using this code in an OpenGL 3+ conte
                                                                                         │          ImGui_ImplOpenGL2_RenderDrawData(ImGui::GetDrawData());                         
        SDL_GL_SwapWindow(window);                                                       │          SDL_GL_SwapWindow(window);                                                      
    }                                                                                    │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/examples/example_glfw_opengl3/main.cpp:101                                        │ imgui/examples/example_glfw_opengl2/main.cpp:80                                          
                                                                                         │                                                                                          
        // Poll and handle events (inputs, window resize, etc.)                          │          // Poll and handle events (inputs, window resize, etc.)                         
        // You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if │          // You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if
        // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your  │          // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your 
        // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to │          // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to
        // Generally you may always pass all inputs to dear imgui, and hide them from yo │          // Generally you may always pass all inputs to dear imgui, and hide them from yo
        glfwPollEvents();                                                                │          glfwPollEvents();                                                               
                                                                                         │                                                                                          
        // Start the Dear ImGui frame                                                    │          // Start the Dear ImGui frame                                                   
        ImGui_ImplOpenGL3_NewFrame();                                                    │          ImGui_ImplOpenGL2_NewFrame();                                                   
        ImGui_ImplGlfw_NewFrame();                                                       │          ImGui_ImplGlfw_NewFrame();                                                      
        ImGui::NewFrame();                                                               │          ImGui::NewFrame();                                                              
                                                                                         │                                                                                          
        // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWin │          // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWin
        if (show_demo_window)                                                            │          if (show_demo_window)                                                           
            ImGui::ShowDemoWindow(&show_demo_window);                                    │              ImGui::ShowDemoWindow(&show_demo_window);                                   
                                                                                         │                                                                                          
        // 2. Show a simple window that we create ourselves. We use a Begin/End pair to  │          // 2. Show a simple window that we create ourselves. We use a Begin/End pair to 
        {                                                                                │          {                                                                               
            static float f = 0.0f;                                                       │              static float f = 0.0f;                                                      
            static int counter = 0;                                                      │              static int counter = 0;                                                     
                                                                                         │                                                                                          
            ImGui::Begin("Hello, world!");                          // Create a window c │              ImGui::Begin("Hello, world!");                          // Create a window c
                                                                                         │                                                                                          
            ImGui::Text("This is some useful text.");               // Display some text │              ImGui::Text("This is some useful text.");               // Display some text
            ImGui::Checkbox("Demo Window", &show_demo_window);      // Edit bools storin │              ImGui::Checkbox("Demo Window", &show_demo_window);      // Edit bools storin
            ImGui::Checkbox("Another Window", &show_another_window);                     │              ImGui::Checkbox("Another Window", &show_another_window);                    
                                                                                         │                                                                                          
            ImGui::SliderFloat("float", &f, 0.0f, 1.0f);            // Edit 1 float usin │              ImGui::SliderFloat("float", &f, 0.0f, 1.0f);            // Edit 1 float usin
            ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats rep │              ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats rep
                                                                                         │                                                                                          
            if (ImGui::Button("Button"))                            // Buttons return tr │              if (ImGui::Button("Button"))                            // Buttons return tr
                counter++;                                                               │                  counter++;                                                              
            ImGui::SameLine();                                                           │              ImGui::SameLine();                                                          
            ImGui::Text("counter = %d", counter);                                        │              ImGui::Text("counter = %d", counter);                                       
                                                                                         │                                                                                          
            ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui: │              ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui:
            ImGui::End();                                                                │              ImGui::End();                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // 3. Show another simple window.                                                │          // 3. Show another simple window.                                               
        if (show_another_window)                                                         │          if (show_another_window)                                                        
        {                                                                                │          {                                                                               
            ImGui::Begin("Another Window", &show_another_window);   // Pass a pointer to │              ImGui::Begin("Another Window", &show_another_window);   // Pass a pointer to
            ImGui::Text("Hello from another window!");                                   │              ImGui::Text("Hello from another window!");                                  
            if (ImGui::Button("Close Me"))                                               │              if (ImGui::Button("Close Me"))                                              
                show_another_window = false;                                             │                  show_another_window = false;                                            
            ImGui::End();                                                                │              ImGui::End();                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // Rendering                                                                     │          // Rendering                                                                    
        ImGui::Render();                                                                 │          ImGui::Render();                                                                
        int display_w, display_h;                                                        │          int display_w, display_h;                                                       
        glfwGetFramebufferSize(window, &display_w, &display_h);                          │          glfwGetFramebufferSize(window, &display_w, &display_h);                         
        glViewport(0, 0, display_w, display_h);                                          │          glViewport(0, 0, display_w, display_h);                                         
        glClearColor(clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear │          glClearColor(clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear
        glClear(GL_COLOR_BUFFER_BIT);                                                    │          glClear(GL_COLOR_BUFFER_BIT);                                                   
        ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());                          │                                                                                          
                                                                                         │                                                                                          
                                                                                         │          // If you are using this code with non-legacy OpenGL header/contexts (which you 
                                                                                         │          // you may need to backup/reset/restore other state, e.g. for current shader usi
                                                                                         │          //GLint last_program;                                                           
                                                                                         │          //glGetIntegerv(GL_CURRENT_PROGRAM, &last_program);                             
                                                                                         │          //glUseProgram(0);                                                              
                                                                                         │          ImGui_ImplOpenGL2_RenderDrawData(ImGui::GetDrawData());                         
                                                                                         │          //glUseProgram(last_program);                                                   
                                                                                         │                                                                                          
                                                                                         │          glfwMakeContextCurrent(window);                                                 
        glfwSwapBuffers(window);                                                         │          glfwSwapBuffers(window);                                                        
    }                                                                                    │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/examples/example_glfw_opengl3/main.cpp:101                                        │ imgui/examples/example_sdl_opengl2/main.cpp:79                                           
                                                                                         │                                                                                          
        // Poll and handle events (inputs, window resize, etc.)                          │          // Poll and handle events (inputs, window resize, etc.)                         
        // You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if │          // You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if
        // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your  │          // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your 
        // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to │          // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to
        // Generally you may always pass all inputs to dear imgui, and hide them from yo │          // Generally you may always pass all inputs to dear imgui, and hide them from yo
        glfwPollEvents();                                                                │          SDL_Event event;                                                                
                                                                                         │          while (SDL_PollEvent(&event))                                                   
                                                                                         │          {                                                                               
                                                                                         │              ImGui_ImplSDL2_ProcessEvent(&event);                                        
                                                                                         │              if (event.type == SDL_QUIT)                                                 
                                                                                         │                  done = true;                                                            
                                                                                         │              if (event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_C
                                                                                         │                  done = true;                                                            
                                                                                         │          }                                                                               
                                                                                         │                                                                                          
        // Start the Dear ImGui frame                                                    │          // Start the Dear ImGui frame                                                   
        ImGui_ImplOpenGL3_NewFrame();                                                    │          ImGui_ImplOpenGL2_NewFrame();                                                   
        ImGui_ImplGlfw_NewFrame();                                                       │          ImGui_ImplSDL2_NewFrame();                                                      
        ImGui::NewFrame();                                                               │          ImGui::NewFrame();                                                              
                                                                                         │                                                                                          
        // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWin │          // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWin
        if (show_demo_window)                                                            │          if (show_demo_window)                                                           
            ImGui::ShowDemoWindow(&show_demo_window);                                    │              ImGui::ShowDemoWindow(&show_demo_window);                                   
                                                                                         │                                                                                          
        // 2. Show a simple window that we create ourselves. We use a Begin/End pair to  │          // 2. Show a simple window that we create ourselves. We use a Begin/End pair to 
        {                                                                                │          {                                                                               
            static float f = 0.0f;                                                       │              static float f = 0.0f;                                                      
            static int counter = 0;                                                      │              static int counter = 0;                                                     
                                                                                         │                                                                                          
            ImGui::Begin("Hello, world!");                          // Create a window c │              ImGui::Begin("Hello, world!");                          // Create a window c
                                                                                         │                                                                                          
            ImGui::Text("This is some useful text.");               // Display some text │              ImGui::Text("This is some useful text.");               // Display some text
            ImGui::Checkbox("Demo Window", &show_demo_window);      // Edit bools storin │              ImGui::Checkbox("Demo Window", &show_demo_window);      // Edit bools storin
            ImGui::Checkbox("Another Window", &show_another_window);                     │              ImGui::Checkbox("Another Window", &show_another_window);                    
                                                                                         │                                                                                          
            ImGui::SliderFloat("float", &f, 0.0f, 1.0f);            // Edit 1 float usin │              ImGui::SliderFloat("float", &f, 0.0f, 1.0f);            // Edit 1 float usin
            ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats rep │              ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats rep
                                                                                         │                                                                                          
            if (ImGui::Button("Button"))                            // Buttons return tr │              if (ImGui::Button("Button"))                            // Buttons return tr
                counter++;                                                               │                  counter++;                                                              
            ImGui::SameLine();                                                           │              ImGui::SameLine();                                                          
            ImGui::Text("counter = %d", counter);                                        │              ImGui::Text("counter = %d", counter);                                       
                                                                                         │                                                                                          
            ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui: │              ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui:
            ImGui::End();                                                                │              ImGui::End();                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // 3. Show another simple window.                                                │          // 3. Show another simple window.                                               
        if (show_another_window)                                                         │          if (show_another_window)                                                        
        {                                                                                │          {                                                                               
            ImGui::Begin("Another Window", &show_another_window);   // Pass a pointer to │              ImGui::Begin("Another Window", &show_another_window);   // Pass a pointer to
            ImGui::Text("Hello from another window!");                                   │              ImGui::Text("Hello from another window!");                                  
            if (ImGui::Button("Close Me"))                                               │              if (ImGui::Button("Close Me"))                                              
                show_another_window = false;                                             │                  show_another_window = false;                                            
            ImGui::End();                                                                │              ImGui::End();                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // Rendering                                                                     │          // Rendering                                                                    
        ImGui::Render();                                                                 │          ImGui::Render();                                                                
        int display_w, display_h;                                                        │          glViewport(0, 0, (int)io.DisplaySize.x, (int)io.DisplaySize.y);                 
        glfwGetFramebufferSize(window, &display_w, &display_h);                          │                                                                                          
        glViewport(0, 0, display_w, display_h);                                          │                                                                                          
        glClearColor(clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear │          glClearColor(clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear
        glClear(GL_COLOR_BUFFER_BIT);                                                    │          glClear(GL_COLOR_BUFFER_BIT);                                                   
        ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());                          │          //glUseProgram(0); // You may want this if using this code in an OpenGL 3+ conte
                                                                                         │          ImGui_ImplOpenGL2_RenderDrawData(ImGui::GetDrawData());                         
        glfwSwapBuffers(window);                                                         │          SDL_GL_SwapWindow(window);                                                      
    }                                                                                    │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/examples/example_glfw_opengl3/main.cpp:101                                        │ imgui/examples/example_sdl_opengl3/main.cpp:101                                          
                                                                                         │                                                                                          
        // Poll and handle events (inputs, window resize, etc.)                          │          // Poll and handle events (inputs, window resize, etc.)                         
        // You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if │          // You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if
        // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your  │          // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your 
        // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to │          // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to
        // Generally you may always pass all inputs to dear imgui, and hide them from yo │          // Generally you may always pass all inputs to dear imgui, and hide them from yo
        glfwPollEvents();                                                                │          SDL_Event event;                                                                
                                                                                         │          while (SDL_PollEvent(&event))                                                   
                                                                                         │          {                                                                               
                                                                                         │              ImGui_ImplSDL2_ProcessEvent(&event);                                        
                                                                                         │              if (event.type == SDL_QUIT)                                                 
                                                                                         │                  done = true;                                                            
                                                                                         │              if (event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_C
                                                                                         │                  done = true;                                                            
                                                                                         │          }                                                                               
                                                                                         │                                                                                          
        // Start the Dear ImGui frame                                                    │          // Start the Dear ImGui frame                                                   
        ImGui_ImplOpenGL3_NewFrame();                                                    │          ImGui_ImplOpenGL3_NewFrame();                                                   
        ImGui_ImplGlfw_NewFrame();                                                       │          ImGui_ImplSDL2_NewFrame();                                                      
        ImGui::NewFrame();                                                               │          ImGui::NewFrame();                                                              
                                                                                         │                                                                                          
        // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWin │          // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWin
        if (show_demo_window)                                                            │          if (show_demo_window)                                                           
            ImGui::ShowDemoWindow(&show_demo_window);                                    │              ImGui::ShowDemoWindow(&show_demo_window);                                   
                                                                                         │                                                                                          
        // 2. Show a simple window that we create ourselves. We use a Begin/End pair to  │          // 2. Show a simple window that we create ourselves. We use a Begin/End pair to 
        {                                                                                │          {                                                                               
            static float f = 0.0f;                                                       │              static float f = 0.0f;                                                      
            static int counter = 0;                                                      │              static int counter = 0;                                                     
                                                                                         │                                                                                          
            ImGui::Begin("Hello, world!");                          // Create a window c │              ImGui::Begin("Hello, world!");                          // Create a window c
                                                                                         │                                                                                          
            ImGui::Text("This is some useful text.");               // Display some text │              ImGui::Text("This is some useful text.");               // Display some text
            ImGui::Checkbox("Demo Window", &show_demo_window);      // Edit bools storin │              ImGui::Checkbox("Demo Window", &show_demo_window);      // Edit bools storin
            ImGui::Checkbox("Another Window", &show_another_window);                     │              ImGui::Checkbox("Another Window", &show_another_window);                    
                                                                                         │                                                                                          
            ImGui::SliderFloat("float", &f, 0.0f, 1.0f);            // Edit 1 float usin │              ImGui::SliderFloat("float", &f, 0.0f, 1.0f);            // Edit 1 float usin
            ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats rep │              ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats rep
                                                                                         │                                                                                          
            if (ImGui::Button("Button"))                            // Buttons return tr │              if (ImGui::Button("Button"))                            // Buttons return tr
                counter++;                                                               │                  counter++;                                                              
            ImGui::SameLine();                                                           │              ImGui::SameLine();                                                          
            ImGui::Text("counter = %d", counter);                                        │              ImGui::Text("counter = %d", counter);                                       
                                                                                         │                                                                                          
            ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui: │              ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui:
            ImGui::End();                                                                │              ImGui::End();                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // 3. Show another simple window.                                                │          // 3. Show another simple window.                                               
        if (show_another_window)                                                         │          if (show_another_window)                                                        
        {                                                                                │          {                                                                               
            ImGui::Begin("Another Window", &show_another_window);   // Pass a pointer to │              ImGui::Begin("Another Window", &show_another_window);   // Pass a pointer to
            ImGui::Text("Hello from another window!");                                   │              ImGui::Text("Hello from another window!");                                  
            if (ImGui::Button("Close Me"))                                               │              if (ImGui::Button("Close Me"))                                              
                show_another_window = false;                                             │                  show_another_window = false;                                            
            ImGui::End();                                                                │              ImGui::End();                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        // Rendering                                                                     │          // Rendering                                                                    
        ImGui::Render();                                                                 │          ImGui::Render();                                                                
        int display_w, display_h;                                                        │          glViewport(0, 0, (int)io.DisplaySize.x, (int)io.DisplaySize.y);                 
        glfwGetFramebufferSize(window, &display_w, &display_h);                          │                                                                                          
        glViewport(0, 0, display_w, display_h);                                          │                                                                                          
        glClearColor(clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear │          glClearColor(clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear
        glClear(GL_COLOR_BUFFER_BIT);                                                    │          glClear(GL_COLOR_BUFFER_BIT);                                                   
        ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());                          │          ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());                         
                                                                                         │          SDL_GL_SwapWindow(window);                                                      
        glfwSwapBuffers(window);                                                         │                                                                                          
    }                                                                                    │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/examples/example_glfw_vulkan/main.cpp:262                                         │ imgui/examples/example_sdl_vulkan/main.cpp:254                                           
                                                                                         │                                                                                          
    VkResult err;                                                                        │      VkResult err;                                                                       
                                                                                         │                                                                                          
    VkSemaphore image_acquired_semaphore  = wd->FrameSemaphores[wd->SemaphoreIndex].Imag │      VkSemaphore image_acquired_semaphore  = wd->FrameSemaphores[wd->SemaphoreIndex].Imag
    VkSemaphore render_complete_semaphore = wd->FrameSemaphores[wd->SemaphoreIndex].Rend │      VkSemaphore render_complete_semaphore = wd->FrameSemaphores[wd->SemaphoreIndex].Rend
    err = vkAcquireNextImageKHR(g_Device, wd->Swapchain, UINT64_MAX, image_acquired_sema │      err = vkAcquireNextImageKHR(g_Device, wd->Swapchain, UINT64_MAX, image_acquired_sema
    if (err == VK_ERROR_OUT_OF_DATE_KHR || err == VK_SUBOPTIMAL_KHR)                     │      if (err == VK_ERROR_OUT_OF_DATE_KHR || err == VK_SUBOPTIMAL_KHR)                    
    {                                                                                    │      {                                                                                   
        g_SwapChainRebuild = true;                                                       │          g_SwapChainRebuild = true;                                                      
        return;                                                                          │          return;                                                                         
    }                                                                                    │      }                                                                                   
    check_vk_result(err);                                                                │      check_vk_result(err);                                                               
                                                                                         │                                                                                          
    ImGui_ImplVulkanH_Frame* fd = &wd->Frames[wd->FrameIndex];                           │      ImGui_ImplVulkanH_Frame* fd = &wd->Frames[wd->FrameIndex];                          
    {                                                                                    │      {                                                                                   
        err = vkWaitForFences(g_Device, 1, &fd->Fence, VK_TRUE, UINT64_MAX);    // wait  │          err = vkWaitForFences(g_Device, 1, &fd->Fence, VK_TRUE, UINT64_MAX);    // wait 
        check_vk_result(err);                                                            │          check_vk_result(err);                                                           
                                                                                         │                                                                                          
        err = vkResetFences(g_Device, 1, &fd->Fence);                                    │          err = vkResetFences(g_Device, 1, &fd->Fence);                                   
        check_vk_result(err);                                                            │          check_vk_result(err);                                                           
    }                                                                                    │      }                                                                                   
    {                                                                                    │      {                                                                                   
        err = vkResetCommandPool(g_Device, fd->CommandPool, 0);                          │          err = vkResetCommandPool(g_Device, fd->CommandPool, 0);                         
        check_vk_result(err);                                                            │          check_vk_result(err);                                                           
        VkCommandBufferBeginInfo info = {};                                              │          VkCommandBufferBeginInfo info = {};                                             
        info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;                        │          info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;                       
        info.flags |= VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;                       │          info.flags |= VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;                      
        err = vkBeginCommandBuffer(fd->CommandBuffer, &info);                            │          err = vkBeginCommandBuffer(fd->CommandBuffer, &info);                           
        check_vk_result(err);                                                            │          check_vk_result(err);                                                           
    }                                                                                    │      }                                                                                   
    {                                                                                    │      {                                                                                   
        VkRenderPassBeginInfo info = {};                                                 │          VkRenderPassBeginInfo info = {};                                                
        info.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO;                           │          info.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO;                          
        info.renderPass = wd->RenderPass;                                                │          info.renderPass = wd->RenderPass;                                               
        info.framebuffer = fd->Framebuffer;                                              │          info.framebuffer = fd->Framebuffer;                                             
        info.renderArea.extent.width = wd->Width;                                        │          info.renderArea.extent.width = wd->Width;                                       
        info.renderArea.extent.height = wd->Height;                                      │          info.renderArea.extent.height = wd->Height;                                     
        info.clearValueCount = 1;                                                        │          info.clearValueCount = 1;                                                       
        info.pClearValues = &wd->ClearValue;                                             │          info.pClearValues = &wd->ClearValue;                                            
        vkCmdBeginRenderPass(fd->CommandBuffer, &info, VK_SUBPASS_CONTENTS_INLINE);      │          vkCmdBeginRenderPass(fd->CommandBuffer, &info, VK_SUBPASS_CONTENTS_INLINE);     
    }                                                                                    │      }                                                                                   
                                                                                         │                                                                                          
    // Record dear imgui primitives into command buffer                                  │      // Record dear imgui primitives into command buffer                                 
    ImGui_ImplVulkan_RenderDrawData(draw_data, fd->CommandBuffer);                       │      ImGui_ImplVulkan_RenderDrawData(draw_data, fd->CommandBuffer);                      
                                                                                         │                                                                                          
    // Submit command buffer                                                             │      // Submit command buffer                                                            
    vkCmdEndRenderPass(fd->CommandBuffer);                                               │      vkCmdEndRenderPass(fd->CommandBuffer);                                              
    {                                                                                    │      {                                                                                   
        VkPipelineStageFlags wait_stage = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; │          VkPipelineStageFlags wait_stage = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
        VkSubmitInfo info = {};                                                          │          VkSubmitInfo info = {};                                                         
        info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;                                      │          info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;                                     
        info.waitSemaphoreCount = 1;                                                     │          info.waitSemaphoreCount = 1;                                                    
        info.pWaitSemaphores = &image_acquired_semaphore;                                │          info.pWaitSemaphores = &image_acquired_semaphore;                               
        info.pWaitDstStageMask = &wait_stage;                                            │          info.pWaitDstStageMask = &wait_stage;                                           
        info.commandBufferCount = 1;                                                     │          info.commandBufferCount = 1;                                                    
        info.pCommandBuffers = &fd->CommandBuffer;                                       │          info.pCommandBuffers = &fd->CommandBuffer;                                      
        info.signalSemaphoreCount = 1;                                                   │          info.signalSemaphoreCount = 1;                                                  
        info.pSignalSemaphores = &render_complete_semaphore;                             │          info.pSignalSemaphores = &render_complete_semaphore;                            
                                                                                         │                                                                                          
        err = vkEndCommandBuffer(fd->CommandBuffer);                                     │          err = vkEndCommandBuffer(fd->CommandBuffer);                                    
        check_vk_result(err);                                                            │          check_vk_result(err);                                                           
        err = vkQueueSubmit(g_Queue, 1, &info, fd->Fence);                               │          err = vkQueueSubmit(g_Queue, 1, &info, fd->Fence);                              
        check_vk_result(err);                                                            │          check_vk_result(err);                                                           
    }                                                                                    │      }                                                                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/backends/imgui_impl_dx11.cpp:307                                                  │ imgui/backends/imgui_impl_dx10.cpp:295                                                   
                                                                                         │                                                                                          
    // Build texture atlas                                                               │      // Build texture atlas                                                              
                                                                                         │      ImGui_ImplDX10_Data* bd = ImGui_ImplDX10_GetBackendData();                          
    ImGuiIO& io = ImGui::GetIO();                                                        │      ImGuiIO& io = ImGui::GetIO();                                                       
    ImGui_ImplDX11_Data* bd = ImGui_ImplDX11_GetBackendData();                           │                                                                                          
    unsigned char* pixels;                                                               │      unsigned char* pixels;                                                              
    int width, height;                                                                   │      int width, height;                                                                  
    io.Fonts->GetTexDataAsRGBA32(&pixels, &width, &height);                              │      io.Fonts->GetTexDataAsRGBA32(&pixels, &width, &height);                             
                                                                                         │                                                                                          
    // Upload texture to graphics system                                                 │      // Upload texture to graphics system                                                
    {                                                                                    │      {                                                                                   
        D3D11_TEXTURE2D_DESC desc;                                                       │          D3D10_TEXTURE2D_DESC desc;                                                      
        ZeroMemory(&desc, sizeof(desc));                                                 │          ZeroMemory(&desc, sizeof(desc));                                                
        desc.Width = width;                                                              │          desc.Width = width;                                                             
        desc.Height = height;                                                            │          desc.Height = height;                                                           
        desc.MipLevels = 1;                                                              │          desc.MipLevels = 1;                                                             
        desc.ArraySize = 1;                                                              │          desc.ArraySize = 1;                                                             
        desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;                                        │          desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;                                       
        desc.SampleDesc.Count = 1;                                                       │          desc.SampleDesc.Count = 1;                                                      
        desc.Usage = D3D11_USAGE_DEFAULT;                                                │          desc.Usage = D3D10_USAGE_DEFAULT;                                               
        desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;                                     │          desc.BindFlags = D3D10_BIND_SHADER_RESOURCE;                                    
        desc.CPUAccessFlags = 0;                                                         │          desc.CPUAccessFlags = 0;                                                        
                                                                                         │                                                                                          
        ID3D11Texture2D* pTexture = NULL;                                                │          ID3D10Texture2D* pTexture = NULL;                                               
        D3D11_SUBRESOURCE_DATA subResource;                                              │          D3D10_SUBRESOURCE_DATA subResource;                                             
        subResource.pSysMem = pixels;                                                    │          subResource.pSysMem = pixels;                                                   
        subResource.SysMemPitch = desc.Width * 4;                                        │          subResource.SysMemPitch = desc.Width * 4;                                       
        subResource.SysMemSlicePitch = 0;                                                │          subResource.SysMemSlicePitch = 0;                                               
        bd->pd3dDevice->CreateTexture2D(&desc, &subResource, &pTexture);                 │          bd->pd3dDevice->CreateTexture2D(&desc, &subResource, &pTexture);                
        IM_ASSERT(pTexture != NULL);                                                     │          IM_ASSERT(pTexture != NULL);                                                    
                                                                                         │                                                                                          
        // Create texture view                                                           │          // Create texture view                                                          
        D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;                                         │          D3D10_SHADER_RESOURCE_VIEW_DESC srv_desc;                                       
        ZeroMemory(&srvDesc, sizeof(srvDesc));                                           │          ZeroMemory(&srv_desc, sizeof(srv_desc));                                        
        srvDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;                                     │          srv_desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;                                   
        srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;                           │          srv_desc.ViewDimension = D3D10_SRV_DIMENSION_TEXTURE2D;                         
        srvDesc.Texture2D.MipLevels = desc.MipLevels;                                    │          srv_desc.Texture2D.MipLevels = desc.MipLevels;                                  
        srvDesc.Texture2D.MostDetailedMip = 0;                                           │          srv_desc.Texture2D.MostDetailedMip = 0;                                         
        bd->pd3dDevice->CreateShaderResourceView(pTexture, &srvDesc, &bd->pFontTextureVi │          bd->pd3dDevice->CreateShaderResourceView(pTexture, &srv_desc, &bd->pFontTextureV
        pTexture->Release();                                                             │          pTexture->Release();                                                            
    }                                                                                    │      }                                                                                   
                                                                                         │                                                                                          
    // Store our identifier                                                              │      // Store our identifier                                                             
    io.Fonts->SetTexID((ImTextureID)bd->pFontTextureView);                               │      io.Fonts->SetTexID((ImTextureID)bd->pFontTextureView);                              
                                                                                         │                                                                                          
    // Create texture sampler                                                            │      // Create texture sampler                                                           
    // (Bilinear sampling is required by default. Set 'io.Fonts->Flags |= ImFontAtlasFla │      // (Bilinear sampling is required by default. Set 'io.Fonts->Flags |= ImFontAtlasFla
    {                                                                                    │      {                                                                                   
        D3D11_SAMPLER_DESC desc;                                                         │          D3D10_SAMPLER_DESC desc;                                                        
        ZeroMemory(&desc, sizeof(desc));                                                 │          ZeroMemory(&desc, sizeof(desc));                                                
        desc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;                                   │          desc.Filter = D3D10_FILTER_MIN_MAG_MIP_LINEAR;                                  
        desc.AddressU = D3D11_TEXTURE_ADDRESS_WRAP;                                      │          desc.AddressU = D3D10_TEXTURE_ADDRESS_WRAP;                                     
        desc.AddressV = D3D11_TEXTURE_ADDRESS_WRAP;                                      │          desc.AddressV = D3D10_TEXTURE_ADDRESS_WRAP;                                     
        desc.AddressW = D3D11_TEXTURE_ADDRESS_WRAP;                                      │          desc.AddressW = D3D10_TEXTURE_ADDRESS_WRAP;                                     
        desc.MipLODBias = 0.f;                                                           │          desc.MipLODBias = 0.f;                                                          
        desc.ComparisonFunc = D3D11_COMPARISON_ALWAYS;                                   │          desc.ComparisonFunc = D3D10_COMPARISON_ALWAYS;                                  
        desc.MinLOD = 0.f;                                                               │          desc.MinLOD = 0.f;                                                              
        desc.MaxLOD = 0.f;                                                               │          desc.MaxLOD = 0.f;                                                              
        bd->pd3dDevice->CreateSamplerState(&desc, &bd->pFontSampler);                    │          bd->pd3dDevice->CreateSamplerState(&desc, &bd->pFontSampler);                   
    }                                                                                    │      }                                                                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/imstb_truetype.h:4021                                                             │ imgui/imstb_truetype.h:4083                                                              
                                                                                         │                                                                                          
   unsigned char buffer[STBTT_MAX_OVERSAMPLE];                                           │     unsigned char buffer[STBTT_MAX_OVERSAMPLE];                                          
   int safe_w = w - kernel_width;                                                        │     int safe_h = h - kernel_width;                                                       
   int j;                                                                                │     int j;                                                                               
   STBTT_memset(buffer, 0, STBTT_MAX_OVERSAMPLE); // suppress bogus warning from VS2013  │     STBTT_memset(buffer, 0, STBTT_MAX_OVERSAMPLE); // suppress bogus warning from VS2013 
   for (j=0; j < h; ++j) {                                                               │     for (j=0; j < w; ++j) {                                                              
      int i;                                                                             │        int i;                                                                            
      unsigned int total;                                                                │        unsigned int total;                                                               
      STBTT_memset(buffer, 0, kernel_width);                                             │        STBTT_memset(buffer, 0, kernel_width);                                            
                                                                                         │                                                                                          
      total = 0;                                                                         │        total = 0;                                                                        
                                                                                         │                                                                                          
      // make kernel_width a constant in common cases so compiler can optimize out the d │        // make kernel_width a constant in common cases so compiler can optimize out the d
      switch (kernel_width) {                                                            │        switch (kernel_width) {                                                           
         case 2:                                                                         │           case 2:                                                                        
            for (i=0; i <= safe_w; ++i) {                                                │              for (i=0; i <= safe_h; ++i) {                                               
               total += pixels[i] - buffer[i & STBTT__OVER_MASK];                        │                 total += pixels[i*stride_in_bytes] - buffer[i & STBTT__OVER_MASK];       
               buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i];                  │                 buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i*stride_in_bytes]; 
               pixels[i] = (unsigned char) (total / 2);                                  │                 pixels[i*stride_in_bytes] = (unsigned char) (total / 2);                 
            }                                                                            │              }                                                                           
            break;                                                                       │              break;                                                                      
         case 3:                                                                         │           case 3:                                                                        
            for (i=0; i <= safe_w; ++i) {                                                │              for (i=0; i <= safe_h; ++i) {                                               
               total += pixels[i] - buffer[i & STBTT__OVER_MASK];                        │                 total += pixels[i*stride_in_bytes] - buffer[i & STBTT__OVER_MASK];       
               buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i];                  │                 buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i*stride_in_bytes]; 
               pixels[i] = (unsigned char) (total / 3);                                  │                 pixels[i*stride_in_bytes] = (unsigned char) (total / 3);                 
            }                                                                            │              }                                                                           
            break;                                                                       │              break;                                                                      
         case 4:                                                                         │           case 4:                                                                        
            for (i=0; i <= safe_w; ++i) {                                                │              for (i=0; i <= safe_h; ++i) {                                               
               total += pixels[i] - buffer[i & STBTT__OVER_MASK];                        │                 total += pixels[i*stride_in_bytes] - buffer[i & STBTT__OVER_MASK];       
               buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i];                  │                 buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i*stride_in_bytes]; 
               pixels[i] = (unsigned char) (total / 4);                                  │                 pixels[i*stride_in_bytes] = (unsigned char) (total / 4);                 
            }                                                                            │              }                                                                           
            break;                                                                       │              break;                                                                      
         case 5:                                                                         │           case 5:                                                                        
            for (i=0; i <= safe_w; ++i) {                                                │              for (i=0; i <= safe_h; ++i) {                                               
               total += pixels[i] - buffer[i & STBTT__OVER_MASK];                        │                 total += pixels[i*stride_in_bytes] - buffer[i & STBTT__OVER_MASK];       
               buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i];                  │                 buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i*stride_in_bytes]; 
               pixels[i] = (unsigned char) (total / 5);                                  │                 pixels[i*stride_in_bytes] = (unsigned char) (total / 5);                 
            }                                                                            │              }                                                                           
            break;                                                                       │              break;                                                                      
         default:                                                                        │           default:                                                                       
            for (i=0; i <= safe_w; ++i) {                                                │              for (i=0; i <= safe_h; ++i) {                                               
               total += pixels[i] - buffer[i & STBTT__OVER_MASK];                        │                 total += pixels[i*stride_in_bytes] - buffer[i & STBTT__OVER_MASK];       
               buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i];                  │                 buffer[(i+kernel_width) & STBTT__OVER_MASK] = pixels[i*stride_in_bytes]; 
               pixels[i] = (unsigned char) (total / kernel_width);                       │                 pixels[i*stride_in_bytes] = (unsigned char) (total / kernel_width);      
            }                                                                            │              }                                                                           
            break;                                                                       │              break;                                                                      
      }                                                                                  │        }                                                                                 
                                                                                         │                                                                                          
      for (; i < w; ++i) {                                                               │        for (; i < h; ++i) {                                                              
         STBTT_assert(pixels[i] == 0);                                                   │           STBTT_assert(pixels[i*stride_in_bytes] == 0);                                  
         total -= buffer[i & STBTT__OVER_MASK];                                          │           total -= buffer[i & STBTT__OVER_MASK];                                         
         pixels[i] = (unsigned char) (total / kernel_width);                             │           pixels[i*stride_in_bytes] = (unsigned char) (total / kernel_width);            
      }                                                                                  │        }                                                                                 
                                                                                         │                                                                                          
      pixels += stride_in_bytes;                                                         │        pixels += 1;                                                                      
   }                                                                                     │     }                                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/backends/imgui_impl_dx9.cpp:235                                                   │ imgui/backends/imgui_impl_dx12.cpp:246                                                   
                                                                                         │                                                                                          
        const ImDrawList* cmd_list = draw_data->CmdLists[n];                             │          const ImDrawList* cmd_list = draw_data->CmdLists[n];                            
        for (int cmd_i = 0; cmd_i < cmd_list->CmdBuffer.Size; cmd_i++)                   │          for (int cmd_i = 0; cmd_i < cmd_list->CmdBuffer.Size; cmd_i++)                  
        {                                                                                │          {                                                                               
            const ImDrawCmd* pcmd = &cmd_list->CmdBuffer[cmd_i];                         │              const ImDrawCmd* pcmd = &cmd_list->CmdBuffer[cmd_i];                        
            if (pcmd->UserCallback != NULL)                                              │              if (pcmd->UserCallback != NULL)                                             
            {                                                                            │              {                                                                           
                // User callback, registered via ImDrawList::AddCallback()               │                  // User callback, registered via ImDrawList::AddCallback()              
                // (ImDrawCallback_ResetRenderState is a special callback value used by  │                  // (ImDrawCallback_ResetRenderState is a special callback value used by 
                if (pcmd->UserCallback == ImDrawCallback_ResetRenderState)               │                  if (pcmd->UserCallback == ImDrawCallback_ResetRenderState)              
                    ImGui_ImplDX9_SetupRenderState(draw_data);                           │                      ImGui_ImplDX12_SetupRenderState(draw_data, ctx, fr);                
                else                                                                     │                  else                                                                    
                    pcmd->UserCallback(cmd_list, pcmd);                                  │                      pcmd->UserCallback(cmd_list, pcmd);                                 
            }                                                                            │              }                                                                           
            else                                                                         │              else                                                                        
            {                                                                            │              {                                                                           
                // Project scissor/clipping rectangles into framebuffer space            │                  // Project scissor/clipping rectangles into framebuffer space           
                ImVec2 clip_min(pcmd->ClipRect.x - clip_off.x, pcmd->ClipRect.y - clip_o │                  ImVec2 clip_min(pcmd->ClipRect.x - clip_off.x, pcmd->ClipRect.y - clip_o
                ImVec2 clip_max(pcmd->ClipRect.z - clip_off.x, pcmd->ClipRect.w - clip_o │                  ImVec2 clip_max(pcmd->ClipRect.z - clip_off.x, pcmd->ClipRect.w - clip_o
                if (clip_max.x <= clip_min.x || clip_max.y <= clip_min.y)                │                  if (clip_max.x <= clip_min.x || clip_max.y <= clip_min.y)               
                    continue;                                                            │                      continue;                                                           
                                                                                         │                                                                                          
                // Apply Scissor/clipping rectangle, Bind texture, Draw                  │                  // Apply Scissor/clipping rectangle, Bind texture, Draw                 
                const RECT r = { (LONG)clip_min.x, (LONG)clip_min.y, (LONG)clip_max.x, ( │                  const D3D12_RECT r = { (LONG)clip_min.x, (LONG)clip_min.y, (LONG)clip_ma
                const LPDIRECT3DTEXTURE9 texture = (LPDIRECT3DTEXTURE9)pcmd->GetTexID(); │                  D3D12_GPU_DESCRIPTOR_HANDLE texture_handle = {};                        
                bd->pd3dDevice->SetTexture(0, texture);                                  │                  texture_handle.ptr = (UINT64)pcmd->GetTexID();                          
                bd->pd3dDevice->SetScissorRect(&r);                                      │                  ctx->SetGraphicsRootDescriptorTable(1, texture_handle);                 
                bd->pd3dDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, pcmd->VtxOffset │                  ctx->RSSetScissorRects(1, &r);                                          
                                                                                         │                  ctx->DrawIndexedInstanced(pcmd->ElemCount, 1, pcmd->IdxOffset + global_i
            }                                                                            │              }                                                                           
        }                                                                                │          }                                                                               
        global_idx_offset += cmd_list->IdxBuffer.Size;                                   │          global_idx_offset += cmd_list->IdxBuffer.Size;                                  
        global_vtx_offset += cmd_list->VtxBuffer.Size;                                   │          global_vtx_offset += cmd_list->VtxBuffer.Size;                                  
    }                                                                                    │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/backends/imgui_impl_dx10.cpp:240                                                  │ imgui/backends/imgui_impl_dx12.cpp:246                                                   
                                                                                         │                                                                                          
        const ImDrawList* cmd_list = draw_data->CmdLists[n];                             │          const ImDrawList* cmd_list = draw_data->CmdLists[n];                            
        for (int cmd_i = 0; cmd_i < cmd_list->CmdBuffer.Size; cmd_i++)                   │          for (int cmd_i = 0; cmd_i < cmd_list->CmdBuffer.Size; cmd_i++)                  
        {                                                                                │          {                                                                               
            const ImDrawCmd* pcmd = &cmd_list->CmdBuffer[cmd_i];                         │              const ImDrawCmd* pcmd = &cmd_list->CmdBuffer[cmd_i];                        
            if (pcmd->UserCallback)                                                      │              if (pcmd->UserCallback != NULL)                                             
            {                                                                            │              {                                                                           
                // User callback, registered via ImDrawList::AddCallback()               │                  // User callback, registered via ImDrawList::AddCallback()              
                // (ImDrawCallback_ResetRenderState is a special callback value used by  │                  // (ImDrawCallback_ResetRenderState is a special callback value used by 
                if (pcmd->UserCallback == ImDrawCallback_ResetRenderState)               │                  if (pcmd->UserCallback == ImDrawCallback_ResetRenderState)              
                    ImGui_ImplDX10_SetupRenderState(draw_data, ctx);                     │                      ImGui_ImplDX12_SetupRenderState(draw_data, ctx, fr);                
                else                                                                     │                  else                                                                    
                    pcmd->UserCallback(cmd_list, pcmd);                                  │                      pcmd->UserCallback(cmd_list, pcmd);                                 
            }                                                                            │              }                                                                           
            else                                                                         │              else                                                                        
            {                                                                            │              {                                                                           
                // Project scissor/clipping rectangles into framebuffer space            │                  // Project scissor/clipping rectangles into framebuffer space           
                ImVec2 clip_min(pcmd->ClipRect.x - clip_off.x, pcmd->ClipRect.y - clip_o │                  ImVec2 clip_min(pcmd->ClipRect.x - clip_off.x, pcmd->ClipRect.y - clip_o
                ImVec2 clip_max(pcmd->ClipRect.z - clip_off.x, pcmd->ClipRect.w - clip_o │                  ImVec2 clip_max(pcmd->ClipRect.z - clip_off.x, pcmd->ClipRect.w - clip_o
                if (clip_max.x <= clip_min.x || clip_max.y <= clip_min.y)                │                  if (clip_max.x <= clip_min.x || clip_max.y <= clip_min.y)               
                    continue;                                                            │                      continue;                                                           
                                                                                         │                                                                                          
                // Apply scissor/clipping rectangle                                      │                  // Apply Scissor/clipping rectangle, Bind texture, Draw                 
                const D3D10_RECT r = { (LONG)clip_min.x, (LONG)clip_min.y, (LONG)clip_ma │                  const D3D12_RECT r = { (LONG)clip_min.x, (LONG)clip_min.y, (LONG)clip_ma
                                                                                         │                  D3D12_GPU_DESCRIPTOR_HANDLE texture_handle = {};                        
                                                                                         │                  texture_handle.ptr = (UINT64)pcmd->GetTexID();                          
                                                                                         │                  ctx->SetGraphicsRootDescriptorTable(1, texture_handle);                 
                ctx->RSSetScissorRects(1, &r);                                           │                  ctx->RSSetScissorRects(1, &r);                                          
                                                                                         │                  ctx->DrawIndexedInstanced(pcmd->ElemCount, 1, pcmd->IdxOffset + global_i
                // Bind texture, Draw                                                    │                                                                                          
                ID3D10ShaderResourceView* texture_srv = (ID3D10ShaderResourceView*)pcmd- │                                                                                          
                ctx->PSSetShaderResources(0, 1, &texture_srv);                           │                                                                                          
                ctx->DrawIndexed(pcmd->ElemCount, pcmd->IdxOffset + global_idx_offset, p │                                                                                          
            }                                                                            │              }                                                                           
        }                                                                                │          }                                                                               
        global_idx_offset += cmd_list->IdxBuffer.Size;                                   │          global_idx_offset += cmd_list->IdxBuffer.Size;                                  
        global_vtx_offset += cmd_list->VtxBuffer.Size;                                   │          global_vtx_offset += cmd_list->VtxBuffer.Size;                                  
    }                                                                                    │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/backends/imgui_impl_dx10.cpp:240                                                  │ imgui/backends/imgui_impl_dx11.cpp:250                                                   
                                                                                         │                                                                                          
        const ImDrawList* cmd_list = draw_data->CmdLists[n];                             │          const ImDrawList* cmd_list = draw_data->CmdLists[n];                            
        for (int cmd_i = 0; cmd_i < cmd_list->CmdBuffer.Size; cmd_i++)                   │          for (int cmd_i = 0; cmd_i < cmd_list->CmdBuffer.Size; cmd_i++)                  
        {                                                                                │          {                                                                               
            const ImDrawCmd* pcmd = &cmd_list->CmdBuffer[cmd_i];                         │              const ImDrawCmd* pcmd = &cmd_list->CmdBuffer[cmd_i];                        
            if (pcmd->UserCallback)                                                      │              if (pcmd->UserCallback != NULL)                                             
            {                                                                            │              {                                                                           
                // User callback, registered via ImDrawList::AddCallback()               │                  // User callback, registered via ImDrawList::AddCallback()              
                // (ImDrawCallback_ResetRenderState is a special callback value used by  │                  // (ImDrawCallback_ResetRenderState is a special callback value used by 
                if (pcmd->UserCallback == ImDrawCallback_ResetRenderState)               │                  if (pcmd->UserCallback == ImDrawCallback_ResetRenderState)              
                    ImGui_ImplDX10_SetupRenderState(draw_data, ctx);                     │                      ImGui_ImplDX11_SetupRenderState(draw_data, ctx);                    
                else                                                                     │                  else                                                                    
                    pcmd->UserCallback(cmd_list, pcmd);                                  │                      pcmd->UserCallback(cmd_list, pcmd);                                 
            }                                                                            │              }                                                                           
            else                                                                         │              else                                                                        
            {                                                                            │              {                                                                           
                // Project scissor/clipping rectangles into framebuffer space            │                  // Project scissor/clipping rectangles into framebuffer space           
                ImVec2 clip_min(pcmd->ClipRect.x - clip_off.x, pcmd->ClipRect.y - clip_o │                  ImVec2 clip_min(pcmd->ClipRect.x - clip_off.x, pcmd->ClipRect.y - clip_o
                ImVec2 clip_max(pcmd->ClipRect.z - clip_off.x, pcmd->ClipRect.w - clip_o │                  ImVec2 clip_max(pcmd->ClipRect.z - clip_off.x, pcmd->ClipRect.w - clip_o
                if (clip_max.x <= clip_min.x || clip_max.y <= clip_min.y)                │                  if (clip_max.x <= clip_min.x || clip_max.y <= clip_min.y)               
                    continue;                                                            │                      continue;                                                           
                                                                                         │                                                                                          
                // Apply scissor/clipping rectangle                                      │                  // Apply scissor/clipping rectangle                                     
                const D3D10_RECT r = { (LONG)clip_min.x, (LONG)clip_min.y, (LONG)clip_ma │                  const D3D11_RECT r = { (LONG)clip_min.x, (LONG)clip_min.y, (LONG)clip_ma
                ctx->RSSetScissorRects(1, &r);                                           │                  ctx->RSSetScissorRects(1, &r);                                          
                                                                                         │                                                                                          
                // Bind texture, Draw                                                    │                  // Bind texture, Draw                                                   
                ID3D10ShaderResourceView* texture_srv = (ID3D10ShaderResourceView*)pcmd- │                  ID3D11ShaderResourceView* texture_srv = (ID3D11ShaderResourceView*)pcmd-
                ctx->PSSetShaderResources(0, 1, &texture_srv);                           │                  ctx->PSSetShaderResources(0, 1, &texture_srv);                          
                ctx->DrawIndexed(pcmd->ElemCount, pcmd->IdxOffset + global_idx_offset, p │                  ctx->DrawIndexed(pcmd->ElemCount, pcmd->IdxOffset + global_idx_offset, p
            }                                                                            │              }                                                                           
        }                                                                                │          }                                                                               
        global_idx_offset += cmd_list->IdxBuffer.Size;                                   │          global_idx_offset += cmd_list->IdxBuffer.Size;                                  
        global_vtx_offset += cmd_list->VtxBuffer.Size;                                   │          global_vtx_offset += cmd_list->VtxBuffer.Size;                                  
    }                                                                                    │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/backends/imgui_impl_opengl2.cpp:191                                               │ imgui/backends/imgui_impl_opengl3.cpp:461                                                
                                                                                         │                                                                                          
            const ImDrawCmd* pcmd = &cmd_list->CmdBuffer[cmd_i];                         │              const ImDrawCmd* pcmd = &cmd_list->CmdBuffer[cmd_i];                        
            if (pcmd->UserCallback)                                                      │              if (pcmd->UserCallback != NULL)                                             
            {                                                                            │              {                                                                           
                // User callback, registered via ImDrawList::AddCallback()               │                  // User callback, registered via ImDrawList::AddCallback()              
                // (ImDrawCallback_ResetRenderState is a special callback value used by  │                  // (ImDrawCallback_ResetRenderState is a special callback value used by 
                if (pcmd->UserCallback == ImDrawCallback_ResetRenderState)               │                  if (pcmd->UserCallback == ImDrawCallback_ResetRenderState)              
                    ImGui_ImplOpenGL2_SetupRenderState(draw_data, fb_width, fb_height);  │                      ImGui_ImplOpenGL3_SetupRenderState(draw_data, fb_width, fb_height, v
                else                                                                     │                  else                                                                    
                    pcmd->UserCallback(cmd_list, pcmd);                                  │                      pcmd->UserCallback(cmd_list, pcmd);                                 
            }                                                                            │              }                                                                           
            else                                                                         │              else                                                                        
            {                                                                            │              {                                                                           
                // Project scissor/clipping rectangles into framebuffer space            │                  // Project scissor/clipping rectangles into framebuffer space           
                ImVec2 clip_min((pcmd->ClipRect.x - clip_off.x) * clip_scale.x, (pcmd->C │                  ImVec2 clip_min((pcmd->ClipRect.x - clip_off.x) * clip_scale.x, (pcmd->C
                ImVec2 clip_max((pcmd->ClipRect.z - clip_off.x) * clip_scale.x, (pcmd->C │                  ImVec2 clip_max((pcmd->ClipRect.z - clip_off.x) * clip_scale.x, (pcmd->C
                if (clip_max.x <= clip_min.x || clip_max.y <= clip_min.y)                │                  if (clip_max.x <= clip_min.x || clip_max.y <= clip_min.y)               
                    continue;                                                            │                      continue;                                                           
                                                                                         │                                                                                          
                // Apply scissor/clipping rectangle (Y is inverted in OpenGL)            │                  // Apply scissor/clipping rectangle (Y is inverted in OpenGL)           
                glScissor((int)clip_min.x, (int)(fb_height - clip_max.y), (int)(clip_max │                  glScissor((int)clip_min.x, (int)((float)fb_height - clip_max.y), (int)(c
                                                                                         │                                                                                          
                // Bind texture, Draw                                                    │                  // Bind texture, Draw                                                   
                glBindTexture(GL_TEXTURE_2D, (GLuint)(intptr_t)pcmd->GetTexID());        │                  glBindTexture(GL_TEXTURE_2D, (GLuint)(intptr_t)pcmd->GetTexID());       
                glDrawElements(GL_TRIANGLES, (GLsizei)pcmd->ElemCount, sizeof(ImDrawIdx) │  #ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_VTX_OFFSET                                            
                                                                                         │                  if (bd->GlVersion >= 320)                                               
                                                                                         │                      glDrawElementsBaseVertex(GL_TRIANGLES, (GLsizei)pcmd->ElemCount, siz
                                                                                         │                  else                                                                    
                                                                                         │  #endif                                                                                  
                                                                                         │                  glDrawElements(GL_TRIANGLES, (GLsizei)pcmd->ElemCount, sizeof(ImDrawIdx)
            }                                                                            │              }                                                                           
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/examples/example_glfw_vulkan/main.cpp:211                                         │ imgui/examples/example_sdl_vulkan/main.cpp:203                                           
                                                                                         │                                                                                          
    wd->Surface = surface;                                                               │      wd->Surface = surface;                                                              
                                                                                         │                                                                                          
    // Check for WSI support                                                             │      // Check for WSI support                                                            
    VkBool32 res;                                                                        │      VkBool32 res;                                                                       
    vkGetPhysicalDeviceSurfaceSupportKHR(g_PhysicalDevice, g_QueueFamily, wd->Surface, & │      vkGetPhysicalDeviceSurfaceSupportKHR(g_PhysicalDevice, g_QueueFamily, wd->Surface, &
    if (res != VK_TRUE)                                                                  │      if (res != VK_TRUE)                                                                 
    {                                                                                    │      {                                                                                   
        fprintf(stderr, "Error no WSI support on physical device 0\n");                  │          fprintf(stderr, "Error no WSI support on physical device 0\n");                 
        exit(-1);                                                                        │          exit(-1);                                                                       
    }                                                                                    │      }                                                                                   
                                                                                         │                                                                                          
    // Select Surface Format                                                             │      // Select Surface Format                                                            
    const VkFormat requestSurfaceImageFormat[] = { VK_FORMAT_B8G8R8A8_UNORM, VK_FORMAT_R │      const VkFormat requestSurfaceImageFormat[] = { VK_FORMAT_B8G8R8A8_UNORM, VK_FORMAT_R
    const VkColorSpaceKHR requestSurfaceColorSpace = VK_COLORSPACE_SRGB_NONLINEAR_KHR;   │      const VkColorSpaceKHR requestSurfaceColorSpace = VK_COLORSPACE_SRGB_NONLINEAR_KHR;  
    wd->SurfaceFormat = ImGui_ImplVulkanH_SelectSurfaceFormat(g_PhysicalDevice, wd->Surf │      wd->SurfaceFormat = ImGui_ImplVulkanH_SelectSurfaceFormat(g_PhysicalDevice, wd->Surf
                                                                                         │                                                                                          
    // Select Present Mode                                                               │      // Select Present Mode                                                              
#ifdef IMGUI_UNLIMITED_FRAME_RATE                                                        │  #ifdef IMGUI_UNLIMITED_FRAME_RATE                                                       
    VkPresentModeKHR present_modes[] = { VK_PRESENT_MODE_MAILBOX_KHR, VK_PRESENT_MODE_IM │      VkPresentModeKHR present_modes[] = { VK_PRESENT_MODE_MAILBOX_KHR, VK_PRESENT_MODE_IM
#else                                                                                    │  #else                                                                                   
    VkPresentModeKHR present_modes[] = { VK_PRESENT_MODE_FIFO_KHR };                     │      VkPresentModeKHR present_modes[] = { VK_PRESENT_MODE_FIFO_KHR };                    
#endif                                                                                   │  #endif                                                                                  
    wd->PresentMode = ImGui_ImplVulkanH_SelectPresentMode(g_PhysicalDevice, wd->Surface, │      wd->PresentMode = ImGui_ImplVulkanH_SelectPresentMode(g_PhysicalDevice, wd->Surface,
    //printf("[vulkan] Selected PresentMode = %d\n", wd->PresentMode);                   │      //printf("[vulkan] Selected PresentMode = %d\n", wd->PresentMode);                  
                                                                                         │                                                                                          
    // Create SwapChain, RenderPass, Framebuffer, etc.                                   │      // Create SwapChain, RenderPass, Framebuffer, etc.                                  
    IM_ASSERT(g_MinImageCount >= 2);                                                     │      IM_ASSERT(g_MinImageCount >= 2);                                                    
    ImGui_ImplVulkanH_CreateOrResizeWindow(g_Instance, g_PhysicalDevice, g_Device, wd, g │      ImGui_ImplVulkanH_CreateOrResizeWindow(g_Instance, g_PhysicalDevice, g_Device, wd, g
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/backends/imgui_impl_opengl2.cpp:238                                               │ imgui/backends/imgui_impl_opengl3.cpp:532                                                
                                                                                         │                                                                                          
    // Build texture atlas                                                               │                                                                                          
    ImGuiIO& io = ImGui::GetIO();                                                        │      ImGuiIO& io = ImGui::GetIO();                                                       
    ImGui_ImplOpenGL2_Data* bd = ImGui_ImplOpenGL2_GetBackendData();                     │      ImGui_ImplOpenGL3_Data* bd = ImGui_ImplOpenGL3_GetBackendData();                    
                                                                                         │                                                                                          
                                                                                         │      // Build texture atlas                                                              
    unsigned char* pixels;                                                               │      unsigned char* pixels;                                                              
    int width, height;                                                                   │      int width, height;                                                                  
    io.Fonts->GetTexDataAsRGBA32(&pixels, &width, &height);   // Load as RGBA 32-bit (75 │      io.Fonts->GetTexDataAsRGBA32(&pixels, &width, &height);   // Load as RGBA 32-bit (75
                                                                                         │                                                                                          
    // Upload texture to graphics system                                                 │      // Upload texture to graphics system                                                
    // (Bilinear sampling is required by default. Set 'io.Fonts->Flags |= ImFontAtlasFla │      // (Bilinear sampling is required by default. Set 'io.Fonts->Flags |= ImFontAtlasFla
    GLint last_texture;                                                                  │      GLint last_texture;                                                                 
    glGetIntegerv(GL_TEXTURE_BINDING_2D, &last_texture);                                 │      glGetIntegerv(GL_TEXTURE_BINDING_2D, &last_texture);                                
    glGenTextures(1, &bd->FontTexture);                                                  │      glGenTextures(1, &bd->FontTexture);                                                 
    glBindTexture(GL_TEXTURE_2D, bd->FontTexture);                                       │      glBindTexture(GL_TEXTURE_2D, bd->FontTexture);                                      
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);                    │      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);                   
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);                    │      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);                   
                                                                                         │  #ifdef GL_UNPACK_ROW_LENGTH // Not on WebGL/ES                                          
    glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);                                              │      glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);                                             
                                                                                         │  #endif                                                                                  
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, │      glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE,
                                                                                         │                                                                                          
    // Store our identifier                                                              │      // Store our identifier                                                             
    io.Fonts->SetTexID((ImTextureID)(intptr_t)bd->FontTexture);                          │      io.Fonts->SetTexID((ImTextureID)(intptr_t)bd->FontTexture);                         
                                                                                         │                                                                                          
    // Restore state                                                                     │      // Restore state                                                                    
    glBindTexture(GL_TEXTURE_2D, last_texture);                                          │      glBindTexture(GL_TEXTURE_2D, last_texture);                                         
                                                                                         │                                                                                          
    return true;                                                                         │      return true;                                                                        
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/backends/imgui_impl_dx10.cpp:511                                                  │ imgui/backends/imgui_impl_dx11.cpp:523                                                   
                                                                                         │                                                                                          
    ImGui_ImplDX10_Data* bd = ImGui_ImplDX10_GetBackendData();                           │      ImGui_ImplDX11_Data* bd = ImGui_ImplDX11_GetBackendData();                          
    if (!bd->pd3dDevice)                                                                 │      if (!bd->pd3dDevice)                                                                
        return;                                                                          │          return;                                                                         
                                                                                         │                                                                                          
    if (bd->pFontSampler)           { bd->pFontSampler->Release(); bd->pFontSampler = NU │      if (bd->pFontSampler)           { bd->pFontSampler->Release(); bd->pFontSampler = NU
    if (bd->pFontTextureView)       { bd->pFontTextureView->Release(); bd->pFontTextureV │      if (bd->pFontTextureView)       { bd->pFontTextureView->Release(); bd->pFontTextureV
    if (bd->pIB)                    { bd->pIB->Release(); bd->pIB = NULL; }              │      if (bd->pIB)                    { bd->pIB->Release(); bd->pIB = NULL; }             
    if (bd->pVB)                    { bd->pVB->Release(); bd->pVB = NULL; }              │      if (bd->pVB)                    { bd->pVB->Release(); bd->pVB = NULL; }             
    if (bd->pBlendState)            { bd->pBlendState->Release(); bd->pBlendState = NULL │      if (bd->pBlendState)            { bd->pBlendState->Release(); bd->pBlendState = NULL
    if (bd->pDepthStencilState)     { bd->pDepthStencilState->Release(); bd->pDepthStenc │      if (bd->pDepthStencilState)     { bd->pDepthStencilState->Release(); bd->pDepthStenc
    if (bd->pRasterizerState)       { bd->pRasterizerState->Release(); bd->pRasterizerSt │      if (bd->pRasterizerState)       { bd->pRasterizerState->Release(); bd->pRasterizerSt
    if (bd->pPixelShader)           { bd->pPixelShader->Release(); bd->pPixelShader = NU │      if (bd->pPixelShader)           { bd->pPixelShader->Release(); bd->pPixelShader = NU
    if (bd->pVertexConstantBuffer)  { bd->pVertexConstantBuffer->Release(); bd->pVertexC │      if (bd->pVertexConstantBuffer)  { bd->pVertexConstantBuffer->Release(); bd->pVertexC
    if (bd->pInputLayout)           { bd->pInputLayout->Release(); bd->pInputLayout = NU │      if (bd->pInputLayout)           { bd->pInputLayout->Release(); bd->pInputLayout = NU
    if (bd->pVertexShader)          { bd->pVertexShader->Release(); bd->pVertexShader =  │      if (bd->pVertexShader)          { bd->pVertexShader->Release(); bd->pVertexShader = 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/examples/example_emscripten_wgpu/main.cpp:170                                     │ imgui/examples/example_emscripten_opengl3/main.cpp:134                                   
                                                                                         │                                                                                          
        static float f = 0.0f;                                                           │          static float f = 0.0f;                                                          
        static int counter = 0;                                                          │          static int counter = 0;                                                         
                                                                                         │                                                                                          
        ImGui::Begin("Hello, world!");                                // Create a window │          ImGui::Begin("Hello, world!");                                // Create a window
                                                                                         │                                                                                          
        ImGui::Text("This is some useful text.");                     // Display some te │          ImGui::Text("This is some useful text.");                     // Display some te
        ImGui::Checkbox("Demo Window", &show_demo_window);            // Edit bools stor │          ImGui::Checkbox("Demo Window", &show_demo_window);            // Edit bools stor
        ImGui::Checkbox("Another Window", &show_another_window);                         │          ImGui::Checkbox("Another Window", &show_another_window);                        
                                                                                         │                                                                                          
        ImGui::SliderFloat("float", &f, 0.0f, 1.0f);                  // Edit 1 float us │          ImGui::SliderFloat("float", &f, 0.0f, 1.0f);                  // Edit 1 float us
        ImGui::ColorEdit3("clear color", (float*)&clear_color);       // Edit 3 floats r │          ImGui::ColorEdit3("clear color", (float*)&clear_color);       // Edit 3 floats r
                                                                                         │                                                                                          
        if (ImGui::Button("Button"))                                  // Buttons return  │          if (ImGui::Button("Button"))                                  // Buttons return 
            counter++;                                                                   │              counter++;                                                                  
        ImGui::SameLine();                                                               │          ImGui::SameLine();                                                              
        ImGui::Text("counter = %d", counter);                                            │          ImGui::Text("counter = %d", counter);                                           
                                                                                         │                                                                                          
        ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::Get │          ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::Get
        ImGui::End();                                                                    │          ImGui::End();                                                                   
    }                                                                                    │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/backends/imgui_impl_dx10.cpp:192                                                  │ imgui/backends/imgui_impl_dx11.cpp:198                                                   
                                                                                         │                                                                                          
        UINT                        ScissorRectsCount, ViewportsCount;                   │          UINT                        ScissorRectsCount, ViewportsCount;                  
        D3D10_RECT                  ScissorRects[D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_C │          D3D11_RECT                  ScissorRects[D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_C
        D3D10_VIEWPORT              Viewports[D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUN │          D3D11_VIEWPORT              Viewports[D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUN
        ID3D10RasterizerState*      RS;                                                  │          ID3D11RasterizerState*      RS;                                                 
        ID3D10BlendState*           BlendState;                                          │          ID3D11BlendState*           BlendState;                                         
        FLOAT                       BlendFactor[4];                                      │          FLOAT                       BlendFactor[4];                                     
        UINT                        SampleMask;                                          │          UINT                        SampleMask;                                         
        UINT                        StencilRef;                                          │          UINT                        StencilRef;                                         
        ID3D10DepthStencilState*    DepthStencilState;                                   │          ID3D11DepthStencilState*    DepthStencilState;                                  
        ID3D10ShaderResourceView*   PSShaderResource;                                    │          ID3D11ShaderResourceView*   PSShaderResource;                                   
        ID3D10SamplerState*         PSSampler;                                           │          ID3D11SamplerState*         PSSampler;                                          
        ID3D10PixelShader*          PS;                                                  │          ID3D11PixelShader*          PS;                                                 
        ID3D10VertexShader*         VS;                                                  │          ID3D11VertexShader*         VS;                                                 
        ID3D10GeometryShader*       GS;                                                  │          ID3D11GeometryShader*       GS;                                                 
        D3D10_PRIMITIVE_TOPOLOGY    PrimitiveTopology;                                   │          UINT                        PSInstancesCount, VSInstancesCount, GSInstancesCount
        ID3D10Buffer*               IndexBuffer, *VertexBuffer, *VSConstantBuffer;       │          ID3D11ClassInstance         *PSInstances[256], *VSInstances[256], *GSInstances[2
                                                                                         │          D3D11_PRIMITIVE_TOPOLOGY    PrimitiveTopology;                                  
                                                                                         │          ID3D11Buffer*               IndexBuffer, *VertexBuffer, *VSConstantBuffer;      
        UINT                        IndexBufferOffset, VertexBufferStride, VertexBufferO │          UINT                        IndexBufferOffset, VertexBufferStride, VertexBufferO
        DXGI_FORMAT                 IndexBufferFormat;                                   │          DXGI_FORMAT                 IndexBufferFormat;                                  
        ID3D10InputLayout*          InputLayout;                                         │          ID3D11InputLayout*          InputLayout;                                        
    }                                                                                    │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/examples/example_glfw_vulkan/main.cpp:431                                         │ imgui/examples/example_sdl_vulkan/main.cpp:423                                           
                                                                                         │                                                                                          
        // Use any command queue                                                         │          // Use any command queue                                                        
        VkCommandPool command_pool = wd->Frames[wd->FrameIndex].CommandPool;             │          VkCommandPool command_pool = wd->Frames[wd->FrameIndex].CommandPool;            
        VkCommandBuffer command_buffer = wd->Frames[wd->FrameIndex].CommandBuffer;       │          VkCommandBuffer command_buffer = wd->Frames[wd->FrameIndex].CommandBuffer;      
                                                                                         │                                                                                          
        err = vkResetCommandPool(g_Device, command_pool, 0);                             │          err = vkResetCommandPool(g_Device, command_pool, 0);                            
        check_vk_result(err);                                                            │          check_vk_result(err);                                                           
        VkCommandBufferBeginInfo begin_info = {};                                        │          VkCommandBufferBeginInfo begin_info = {};                                       
        begin_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;                  │          begin_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;                 
        begin_info.flags |= VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;                 │          begin_info.flags |= VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;                
        err = vkBeginCommandBuffer(command_buffer, &begin_info);                         │          err = vkBeginCommandBuffer(command_buffer, &begin_info);                        
        check_vk_result(err);                                                            │          check_vk_result(err);                                                           
                                                                                         │                                                                                          
        ImGui_ImplVulkan_CreateFontsTexture(command_buffer);                             │          ImGui_ImplVulkan_CreateFontsTexture(command_buffer);                            
                                                                                         │                                                                                          
        VkSubmitInfo end_info = {};                                                      │          VkSubmitInfo end_info = {};                                                     
        end_info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;                                  │          end_info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;                                 
        end_info.commandBufferCount = 1;                                                 │          end_info.commandBufferCount = 1;                                                
        end_info.pCommandBuffers = &command_buffer;                                      │          end_info.pCommandBuffers = &command_buffer;                                     
        err = vkEndCommandBuffer(command_buffer);                                        │          err = vkEndCommandBuffer(command_buffer);                                       
        check_vk_result(err);                                                            │          check_vk_result(err);                                                           
        err = vkQueueSubmit(g_Queue, 1, &end_info, VK_NULL_HANDLE);                      │          err = vkQueueSubmit(g_Queue, 1, &end_info, VK_NULL_HANDLE);                     
        check_vk_result(err);                                                            │          check_vk_result(err);                                                           
                                                                                         │                                                                                          
        err = vkDeviceWaitIdle(g_Device);                                                │          err = vkDeviceWaitIdle(g_Device);                                               
        check_vk_result(err);                                                            │          check_vk_result(err);                                                           
        ImGui_ImplVulkan_DestroyFontUploadObjects();                                     │          ImGui_ImplVulkan_DestroyFontUploadObjects();                                    
    }                                                                                    │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/imgui_draw.cpp:3601                                                               │ imgui/imgui_draw.cpp:3450                                                                
                                                                                         │                                                                                          
            // Calculate how far we can render. Requires two passes on the string data b │              // Calculate how far we can render. Requires two passes on the string data b
            if (!word_wrap_eol)                                                          │              if (!word_wrap_eol)                                                         
            {                                                                            │              {                                                                           
                word_wrap_eol = CalcWordWrapPositionA(scale, s, text_end, wrap_width - ( │                  word_wrap_eol = CalcWordWrapPositionA(scale, s, text_end, wrap_width - l
                if (word_wrap_eol == s) // Wrap_width is too small to fit anything. Forc │                  if (word_wrap_eol == s) // Wrap_width is too small to fit anything. Forc
                    word_wrap_eol++;    // +1 may not be a character start point in UTF- │                      word_wrap_eol++;    // +1 may not be a character start point in UTF-
            }                                                                            │              }                                                                           
                                                                                         │                                                                                          
            if (s >= word_wrap_eol)                                                      │              if (s >= word_wrap_eol)                                                     
            {                                                                            │              {                                                                           
                x = start_x;                                                             │                  if (text_size.x < line_width)                                           
                y += line_height;                                                        │                      text_size.x = line_width;                                           
                                                                                         │                  text_size.y += line_height;                                             
                                                                                         │                  line_width = 0.0f;                                                      
                word_wrap_eol = NULL;                                                    │                  word_wrap_eol = NULL;                                                   
                                                                                         │                                                                                          
                // Wrapping skips upcoming blanks                                        │                  // Wrapping skips upcoming blanks                                       
                while (s < text_end)                                                     │                  while (s < text_end)                                                    
                {                                                                        │                  {                                                                       
                    const char c = *s;                                                   │                      const char c = *s;                                                  
                    if (ImCharIsBlankA(c)) { s++; } else if (c == '\n') { s++; break; }  │                      if (ImCharIsBlankA(c)) { s++; } else if (c == '\n') { s++; break; } 
                }                                                                        │                  }                                                                       
                continue;                                                                │                  continue;                                                               
            }                                                                            │              }                                                                           
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/examples/example_win32_directx11/main.cpp:165                                     │ imgui/examples/example_sdl_directx11/main.cpp:182                                        
                                                                                         │                                                                                          
    // 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;                                   
    D3D_FEATURE_LEVEL featureLevel;                                                      │      D3D_FEATURE_LEVEL featureLevel;                                                     
    const D3D_FEATURE_LEVEL featureLevelArray[2] = { D3D_FEATURE_LEVEL_11_0, D3D_FEATURE │      const D3D_FEATURE_LEVEL featureLevelArray[2] = { D3D_FEATURE_LEVEL_11_0, D3D_FEATURE
    if (D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, createDevice │      if (D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, createDevice
        return false;                                                                    │          return false;                                                                   
                                                                                         │                                                                                          
    CreateRenderTarget();                                                                │      CreateRenderTarget();                                                               
    return true;                                                                         │      return true;                                                                        
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/backends/imgui_impl_dx10.cpp:530                                                  │ imgui/backends/imgui_impl_dx11.cpp:542                                                   
                                                                                         │                                                                                          
    ImGuiIO& io = ImGui::GetIO();                                                        │      ImGuiIO& io = ImGui::GetIO();                                                       
    IM_ASSERT(io.BackendRendererUserData == NULL && "Already initialized a renderer back │      IM_ASSERT(io.BackendRendererUserData == NULL && "Already initialized a renderer back
                                                                                         │                                                                                          
    // Setup backend capabilities flags                                                  │      // Setup backend capabilities flags                                                 
    ImGui_ImplDX10_Data* bd = IM_NEW(ImGui_ImplDX10_Data)();                             │      ImGui_ImplDX11_Data* bd = IM_NEW(ImGui_ImplDX11_Data)();                            
    io.BackendRendererUserData = (void*)bd;                                              │      io.BackendRendererUserData = (void*)bd;                                             
    io.BackendRendererName = "imgui_impl_dx10";                                          │      io.BackendRendererName = "imgui_impl_dx11";                                         
    io.BackendFlags |= ImGuiBackendFlags_RendererHasVtxOffset;  // We can honor the ImDr │      io.BackendFlags |= ImGuiBackendFlags_RendererHasVtxOffset;  // We can honor the ImDr
                                                                                         │                                                                                          
    // Get factory from device                                                           │      // Get factory from device                                                          
    IDXGIDevice* pDXGIDevice = NULL;                                                     │      IDXGIDevice* pDXGIDevice = NULL;                                                    
    IDXGIAdapter* pDXGIAdapter = NULL;                                                   │      IDXGIAdapter* pDXGIAdapter = NULL;                                                  
    IDXGIFactory* pFactory = NULL;                                                       │      IDXGIFactory* pFactory = NULL;                                                      
                                                                                         │                                                                                          
    if (device->QueryInterface(IID_PPV_ARGS(&pDXGIDevice)) == S_OK)                      │      if (device->QueryInterface(IID_PPV_ARGS(&pDXGIDevice)) == S_OK)                     
        if (pDXGIDevice->GetParent(IID_PPV_ARGS(&pDXGIAdapter)) == S_OK)                 │          if (pDXGIDevice->GetParent(IID_PPV_ARGS(&pDXGIAdapter)) == S_OK)                
            if (pDXGIAdapter->GetParent(IID_PPV_ARGS(&pFactory)) == S_OK)                │              if (pDXGIAdapter->GetParent(IID_PPV_ARGS(&pFactory)) == S_OK)               
            {                                                                            │              {                                                                           
                bd->pd3dDevice = device;                                                 │                  bd->pd3dDevice = device;                                                
                                                                                         │                  bd->pd3dDeviceContext = device_context;                                 
                bd->pFactory = pFactory;                                                 │                  bd->pFactory = pFactory;                                                
            }                                                                            │              }                                                                           
    if (pDXGIDevice) pDXGIDevice->Release();                                             │      if (pDXGIDevice) pDXGIDevice->Release();                                            
    if (pDXGIAdapter) pDXGIAdapter->Release();                                           │      if (pDXGIAdapter) pDXGIAdapter->Release();                                          
    bd->pd3dDevice->AddRef();                                                            │      bd->pd3dDevice->AddRef();                                                           
                                                                                         │      bd->pd3dDeviceContext->AddRef();                                                    
                                                                                         │                                                                                          
    return true;                                                                         │      return true;                                                                        
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/backends/imgui_impl_dx12.cpp:193                                                  │ imgui/backends/imgui_impl_dx12.cpp:170                                                   
                                                                                         │                                                                                          
        SafeRelease(fr->IndexBuffer);                                                    │          SafeRelease(fr->VertexBuffer);                                                  
        fr->IndexBufferSize = draw_data->TotalIdxCount + 10000;                          │          fr->VertexBufferSize = draw_data->TotalVtxCount + 5000;                         
        D3D12_HEAP_PROPERTIES props;                                                     │          D3D12_HEAP_PROPERTIES props;                                                    
        memset(&props, 0, sizeof(D3D12_HEAP_PROPERTIES));                                │          memset(&props, 0, sizeof(D3D12_HEAP_PROPERTIES));                               
        props.Type = D3D12_HEAP_TYPE_UPLOAD;                                             │          props.Type = D3D12_HEAP_TYPE_UPLOAD;                                            
        props.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN;                         │          props.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN;                        
        props.MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN;                          │          props.MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN;                         
        D3D12_RESOURCE_DESC desc;                                                        │          D3D12_RESOURCE_DESC desc;                                                       
        memset(&desc, 0, sizeof(D3D12_RESOURCE_DESC));                                   │          memset(&desc, 0, sizeof(D3D12_RESOURCE_DESC));                                  
        desc.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER;                                │          desc.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER;                               
        desc.Width = fr->IndexBufferSize * sizeof(ImDrawIdx);                            │          desc.Width = fr->VertexBufferSize * sizeof(ImDrawVert);                         
        desc.Height = 1;                                                                 │          desc.Height = 1;                                                                
        desc.DepthOrArraySize = 1;                                                       │          desc.DepthOrArraySize = 1;                                                      
        desc.MipLevels = 1;                                                              │          desc.MipLevels = 1;                                                             
        desc.Format = DXGI_FORMAT_UNKNOWN;                                               │          desc.Format = DXGI_FORMAT_UNKNOWN;                                              
        desc.SampleDesc.Count = 1;                                                       │          desc.SampleDesc.Count = 1;                                                      
        desc.Layout = D3D12_TEXTURE_LAYOUT_ROW_MAJOR;                                    │          desc.Layout = D3D12_TEXTURE_LAYOUT_ROW_MAJOR;                                   
        desc.Flags = D3D12_RESOURCE_FLAG_NONE;                                           │          desc.Flags = D3D12_RESOURCE_FLAG_NONE;                                          
        if (bd->pd3dDevice->CreateCommittedResource(&props, D3D12_HEAP_FLAG_NONE, &desc, │          if (bd->pd3dDevice->CreateCommittedResource(&props, D3D12_HEAP_FLAG_NONE, &desc,
            return;                                                                      │              return;                                                                     
    }                                                                                    │                                                                                          
 next prev up                                                                                                                                                                        
 imgui/imgui_demo.cpp:4492                                                               │ imgui/imgui_demo.cpp:4522                                                                
                                                                                         │                                                                                          
            // We could also set ImGuiTableFlags_SizingFixedFit on the table and all col │              // We could also set ImGuiTableFlags_SizingFixedFit on the table and all col
            ImGui::TableSetupColumn("one", ImGuiTableColumnFlags_WidthFixed, 100.0f); // │              ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthFixed, 100.0f);      
            ImGui::TableSetupColumn("two", ImGuiTableColumnFlags_WidthFixed, 200.0f); // │              ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthFixed, TEXT_BASE_WIDT
            ImGui::TableSetupColumn("three", ImGuiTableColumnFlags_WidthFixed);       // │              ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthFixed, TEXT_BASE_WIDT
            ImGui::TableHeadersRow();                                                    │              ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthFixed, TEXT_BASE_WIDT
            for (int row = 0; row < 4; row++)                                            │              for (int row = 0; row < 5; row++)                                           
            {                                                                            │              {                                                                           
                ImGui::TableNextRow();                                                   │                  ImGui::TableNextRow();                                                  
                for (int column = 0; column < 3; column++)                               │                  for (int column = 0; column < 4; column++)                              
                {                                                                        │                  {                                                                       
                    ImGui::TableSetColumnIndex(column);                                  │                      ImGui::TableSetColumnIndex(column);                                 
                    if (row == 0)                                                        │                      if (row == 0)                                                       
                        ImGui::Text("(w: %5.1f)", ImGui::GetContentRegionAvail().x);     │                          ImGui::Text("(w: %5.1f)", ImGui::GetContentRegionAvail().x);    
                    else                                                                 │                      else                                                                
                        ImGui::Text("Hello %d,%d", column, row);                         │                          ImGui::Text("Hello %d,%d", column, row);                        
                }                                                                        │                  }                                                                       
            }                                                                            │              }                                                                           
            ImGui::EndTable();                                                           │              ImGui::EndTable();                                                          
        }                                                                                │