mirror of
https://github.com/ocornut/imgui.git
synced 2025-10-03 08:38:35 +00:00
This commit is contained in:
@@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
// CHANGELOG
|
// CHANGELOG
|
||||||
// (minor and older changes stripped away, please see git history for details)
|
// (minor and older changes stripped away, please see git history for details)
|
||||||
|
// 2025-09-26: Vulkan: Added a way to customize shaders by filling ImGui_ImplVulkan_InitInfo::CustomShaderVertCreateInfo/CustomShaderFragCreateInfo. (#8585)
|
||||||
// 2025-09-18: Call platform_io.ClearRendererHandlers() on shutdown.
|
// 2025-09-18: Call platform_io.ClearRendererHandlers() on shutdown.
|
||||||
// 2025-09-04: Vulkan: Added ImGui_ImplVulkan_CreateMainPipeline(). (#8110, #8111)
|
// 2025-09-04: Vulkan: Added ImGui_ImplVulkan_CreateMainPipeline(). (#8110, #8111)
|
||||||
// 2025-07-27: Vulkan: Fixed texture update corruption introduced on 2025-06-11. (#8801, #8755, #8840)
|
// 2025-07-27: Vulkan: Fixed texture update corruption introduced on 2025-06-11. (#8801, #8755, #8840)
|
||||||
@@ -887,24 +888,26 @@ void ImGui_ImplVulkan_UpdateTexture(ImTextureData* tex)
|
|||||||
|
|
||||||
static void ImGui_ImplVulkan_CreateShaderModules(VkDevice device, const VkAllocationCallbacks* allocator)
|
static void ImGui_ImplVulkan_CreateShaderModules(VkDevice device, const VkAllocationCallbacks* allocator)
|
||||||
{
|
{
|
||||||
// Create the shader modules
|
|
||||||
ImGui_ImplVulkan_Data* bd = ImGui_ImplVulkan_GetBackendData();
|
ImGui_ImplVulkan_Data* bd = ImGui_ImplVulkan_GetBackendData();
|
||||||
|
ImGui_ImplVulkan_InitInfo* v = &bd->VulkanInitInfo;
|
||||||
if (bd->ShaderModuleVert == VK_NULL_HANDLE)
|
if (bd->ShaderModuleVert == VK_NULL_HANDLE)
|
||||||
{
|
{
|
||||||
VkShaderModuleCreateInfo vert_info = {};
|
VkShaderModuleCreateInfo default_vert_info = {};
|
||||||
vert_info.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
|
default_vert_info.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
|
||||||
vert_info.codeSize = sizeof(__glsl_shader_vert_spv);
|
default_vert_info.codeSize = sizeof(__glsl_shader_vert_spv);
|
||||||
vert_info.pCode = (uint32_t*)__glsl_shader_vert_spv;
|
default_vert_info.pCode = (uint32_t*)__glsl_shader_vert_spv;
|
||||||
VkResult err = vkCreateShaderModule(device, &vert_info, allocator, &bd->ShaderModuleVert);
|
VkShaderModuleCreateInfo* p_vert_info = (v->CustomShaderVertCreateInfo.sType == VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO) ? &v->CustomShaderVertCreateInfo : &default_vert_info;
|
||||||
|
VkResult err = vkCreateShaderModule(device, p_vert_info, allocator, &bd->ShaderModuleVert);
|
||||||
check_vk_result(err);
|
check_vk_result(err);
|
||||||
}
|
}
|
||||||
if (bd->ShaderModuleFrag == VK_NULL_HANDLE)
|
if (bd->ShaderModuleFrag == VK_NULL_HANDLE)
|
||||||
{
|
{
|
||||||
VkShaderModuleCreateInfo frag_info = {};
|
VkShaderModuleCreateInfo default_frag_info = {};
|
||||||
frag_info.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
|
default_frag_info.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
|
||||||
frag_info.codeSize = sizeof(__glsl_shader_frag_spv);
|
default_frag_info.codeSize = sizeof(__glsl_shader_frag_spv);
|
||||||
frag_info.pCode = (uint32_t*)__glsl_shader_frag_spv;
|
default_frag_info.pCode = (uint32_t*)__glsl_shader_frag_spv;
|
||||||
VkResult err = vkCreateShaderModule(device, &frag_info, allocator, &bd->ShaderModuleFrag);
|
VkShaderModuleCreateInfo* p_frag_info = (v->CustomShaderFragCreateInfo.sType == VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO) ? &v->CustomShaderFragCreateInfo : &default_frag_info;
|
||||||
|
VkResult err = vkCreateShaderModule(device, p_frag_info, allocator, &bd->ShaderModuleFrag);
|
||||||
check_vk_result(err);
|
check_vk_result(err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -103,6 +103,12 @@ struct ImGui_ImplVulkan_InitInfo
|
|||||||
const VkAllocationCallbacks* Allocator;
|
const VkAllocationCallbacks* Allocator;
|
||||||
void (*CheckVkResultFn)(VkResult err);
|
void (*CheckVkResultFn)(VkResult err);
|
||||||
VkDeviceSize MinAllocationSize; // Minimum allocation size. Set to 1024*1024 to satisfy zealous best practices validation layer and waste a little memory.
|
VkDeviceSize MinAllocationSize; // Minimum allocation size. Set to 1024*1024 to satisfy zealous best practices validation layer and waste a little memory.
|
||||||
|
|
||||||
|
// (Optional) Customize default vertex/fragment shaders.
|
||||||
|
// - if .sType == VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO we use specified structs, otherwise we use defaults.
|
||||||
|
// - Shader inputs/outputs need to match ours. Code/data pointed to by the structure needs to survive for whole during of backend usage.
|
||||||
|
VkShaderModuleCreateInfo CustomShaderVertCreateInfo;
|
||||||
|
VkShaderModuleCreateInfo CustomShaderFragCreateInfo;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Follow "Getting Started" link and check examples/ folder to learn about using backends!
|
// Follow "Getting Started" link and check examples/ folder to learn about using backends!
|
||||||
|
@@ -64,6 +64,8 @@ Other Changes:
|
|||||||
- Better perf on X11 as querying global position requires a round trip to X11 server.
|
- Better perf on X11 as querying global position requires a round trip to X11 server.
|
||||||
- Backends: Win32: minor optimization not submitting gamepad io again if
|
- Backends: Win32: minor optimization not submitting gamepad io again if
|
||||||
XInput's dwPacketNumber has not changed. (#8556) [@MidTerm-CN]
|
XInput's dwPacketNumber has not changed. (#8556) [@MidTerm-CN]
|
||||||
|
- Backends: Vulkan: added a way to specify custom shaders by filling init fields
|
||||||
|
CustomShaderVertCreateInfo and CustomShaderFragCreateInfo. (#8585, #8271) [@johan0A]
|
||||||
- Examples: SDL2+DirectX11: Try WARP software driver if hardware driver is
|
- Examples: SDL2+DirectX11: Try WARP software driver if hardware driver is
|
||||||
not available. (#5924, #5562)
|
not available. (#5924, #5562)
|
||||||
- Examples: SDL3+DirectX11: Added SDL3+DirectX11 example. (#8956, #8957) [@tomaz82]
|
- Examples: SDL3+DirectX11: Added SDL3+DirectX11 example. (#8956, #8957) [@tomaz82]
|
||||||
|
Reference in New Issue
Block a user