|
@@ -364,21 +364,16 @@ static void ImGui_ImplDX11_CreateFontsTexture()
|
|
|
|
|
|
// Store our identifier
|
|
|
io.Fonts->SetTexID((ImTextureID)bd->pFontTextureView);
|
|
|
+}
|
|
|
|
|
|
- // Create texture sampler
|
|
|
- // (Bilinear sampling is required by default. Set 'io.Fonts->Flags |= ImFontAtlasFlags_NoBakedLines' or 'style.AntiAliasedLinesUseTex = false' to allow point/nearest sampling)
|
|
|
+static void ImGui_ImplDX11_DestroyFontsTexture()
|
|
|
+{
|
|
|
+ ImGui_ImplDX11_Data* bd = ImGui_ImplDX11_GetBackendData();
|
|
|
+ if (bd->pFontTextureView)
|
|
|
{
|
|
|
- D3D11_SAMPLER_DESC desc;
|
|
|
- ZeroMemory(&desc, sizeof(desc));
|
|
|
- desc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
|
|
|
- desc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP;
|
|
|
- desc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP;
|
|
|
- desc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP;
|
|
|
- desc.MipLODBias = 0.f;
|
|
|
- desc.ComparisonFunc = D3D11_COMPARISON_ALWAYS;
|
|
|
- desc.MinLOD = 0.f;
|
|
|
- desc.MaxLOD = 0.f;
|
|
|
- bd->pd3dDevice->CreateSamplerState(&desc, &bd->pFontSampler);
|
|
|
+ bd->pFontTextureView->Release();
|
|
|
+ bd->pFontTextureView = nullptr;
|
|
|
+ ImGui::GetIO().Fonts->SetTexID(0); // We copied data->pFontTextureView to io.Fonts->TexID so let's clear that as well.
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -531,6 +526,22 @@ bool ImGui_ImplDX11_CreateDeviceObjects()
|
|
|
bd->pd3dDevice->CreateDepthStencilState(&desc, &bd->pDepthStencilState);
|
|
|
}
|
|
|
|
|
|
+ // Create texture sampler
|
|
|
+ // (Bilinear sampling is required by default. Set 'io.Fonts->Flags |= ImFontAtlasFlags_NoBakedLines' or 'style.AntiAliasedLinesUseTex = false' to allow point/nearest sampling)
|
|
|
+ {
|
|
|
+ D3D11_SAMPLER_DESC desc;
|
|
|
+ ZeroMemory(&desc, sizeof(desc));
|
|
|
+ desc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
|
|
|
+ desc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP;
|
|
|
+ desc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP;
|
|
|
+ desc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP;
|
|
|
+ desc.MipLODBias = 0.f;
|
|
|
+ desc.ComparisonFunc = D3D11_COMPARISON_ALWAYS;
|
|
|
+ desc.MinLOD = 0.f;
|
|
|
+ desc.MaxLOD = 0.f;
|
|
|
+ bd->pd3dDevice->CreateSamplerState(&desc, &bd->pFontSampler);
|
|
|
+ }
|
|
|
+
|
|
|
ImGui_ImplDX11_CreateFontsTexture();
|
|
|
|
|
|
return true;
|
|
@@ -542,8 +553,9 @@ void ImGui_ImplDX11_InvalidateDeviceObjects()
|
|
|
if (!bd->pd3dDevice)
|
|
|
return;
|
|
|
|
|
|
+ ImGui_ImplDX11_DestroyFontsTexture();
|
|
|
+
|
|
|
if (bd->pFontSampler) { bd->pFontSampler->Release(); bd->pFontSampler = nullptr; }
|
|
|
- if (bd->pFontTextureView) { bd->pFontTextureView->Release(); bd->pFontTextureView = nullptr; ImGui::GetIO().Fonts->SetTexID(0); } // We copied data->pFontTextureView to io.Fonts->TexID so let's clear that as well.
|
|
|
if (bd->pIB) { bd->pIB->Release(); bd->pIB = nullptr; }
|
|
|
if (bd->pVB) { bd->pVB->Release(); bd->pVB = nullptr; }
|
|
|
if (bd->pBlendState) { bd->pBlendState->Release(); bd->pBlendState = nullptr; }
|