Bunch of changes + fixes
This commit is contained in:
@@ -91,12 +91,13 @@ void ImGuiRenderer::beginFrame() {
|
||||
}
|
||||
|
||||
ImTextureID ImGuiRenderer::getTextureId(RenderTargetHandle handle) {
|
||||
vk::ImageView view =
|
||||
resources.renderTargetPool.get(handle).getImage().getView();
|
||||
const RenderTarget& target = resources.renderTargetPool.get(handle);
|
||||
vk::ImageView view = target.getImage().getView();
|
||||
|
||||
auto it = textures.find(handle.index);
|
||||
if (it != textures.end()) {
|
||||
if (it->second.generation == handle.generation && it->second.view == view) {
|
||||
if (it->second.generation == handle.generation &&
|
||||
it->second.version == target.getVersion()) {
|
||||
return (ImTextureID)it->second.descriptorSet;
|
||||
}
|
||||
ImGui_ImplVulkan_RemoveTexture(it->second.descriptorSet);
|
||||
@@ -107,7 +108,8 @@ ImTextureID ImGuiRenderer::getTextureId(RenderTargetHandle handle) {
|
||||
// left in once the scene pass has finished.
|
||||
VkDescriptorSet descriptorSet = ImGui_ImplVulkan_AddTexture(
|
||||
static_cast<VkImageView>(view), VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
|
||||
textures[handle.index] = {handle.generation, view, descriptorSet};
|
||||
textures[handle.index] = {handle.generation, target.getVersion(),
|
||||
descriptorSet};
|
||||
return (ImTextureID)descriptorSet;
|
||||
}
|
||||
|
||||
@@ -120,7 +122,7 @@ void ImGuiRenderer::releaseStaleTextures() {
|
||||
|
||||
bool stale =
|
||||
!renderTargetPool.isAlive(handle) ||
|
||||
renderTargetPool.get(handle).getImage().getView() != it->second.view;
|
||||
renderTargetPool.get(handle).getVersion() != it->second.version;
|
||||
if (stale) {
|
||||
ImGui_ImplVulkan_RemoveTexture(it->second.descriptorSet);
|
||||
it = textures.erase(it);
|
||||
|
||||
Reference in New Issue
Block a user