|
@@ -341,21 +341,16 @@ static void ImGui_ImplDX10_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_ImplDX10_DestroyFontsTexture()
|
|
|
+{
|
|
|
+ ImGui_ImplDX10_Data* bd = ImGui_ImplDX10_GetBackendData();
|
|
|
+ if (bd->pFontTextureView)
|
|
|
{
|
|
|
- D3D10_SAMPLER_DESC desc;
|
|
|
- ZeroMemory(&desc, sizeof(desc));
|
|
|
- desc.Filter = D3D10_FILTER_MIN_MAG_MIP_LINEAR;
|
|
|
- desc.AddressU = D3D10_TEXTURE_ADDRESS_CLAMP;
|
|
|
- desc.AddressV = D3D10_TEXTURE_ADDRESS_CLAMP;
|
|
|
- desc.AddressW = D3D10_TEXTURE_ADDRESS_CLAMP;
|
|
|
- desc.MipLODBias = 0.f;
|
|
|
- desc.ComparisonFunc = D3D10_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 bd->pFontTextureView to io.Fonts->TexID so let's clear that as well.
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -508,6 +503,22 @@ bool ImGui_ImplDX10_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)
|
|
|
+ {
|
|
|
+ D3D10_SAMPLER_DESC desc;
|
|
|
+ ZeroMemory(&desc, sizeof(desc));
|
|
|
+ desc.Filter = D3D10_FILTER_MIN_MAG_MIP_LINEAR;
|
|
|
+ desc.AddressU = D3D10_TEXTURE_ADDRESS_CLAMP;
|
|
|
+ desc.AddressV = D3D10_TEXTURE_ADDRESS_CLAMP;
|
|
|
+ desc.AddressW = D3D10_TEXTURE_ADDRESS_CLAMP;
|
|
|
+ desc.MipLODBias = 0.f;
|
|
|
+ desc.ComparisonFunc = D3D10_COMPARISON_ALWAYS;
|
|
|
+ desc.MinLOD = 0.f;
|
|
|
+ desc.MaxLOD = 0.f;
|
|
|
+ bd->pd3dDevice->CreateSamplerState(&desc, &bd->pFontSampler);
|
|
|
+ }
|
|
|
+
|
|
|
ImGui_ImplDX10_CreateFontsTexture();
|
|
|
|
|
|
return true;
|
|
@@ -519,8 +530,9 @@ void ImGui_ImplDX10_InvalidateDeviceObjects()
|
|
|
if (!bd->pd3dDevice)
|
|
|
return;
|
|
|
|
|
|
+ ImGui_ImplDX10_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 bd->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; }
|
|
@@ -582,7 +594,7 @@ void ImGui_ImplDX10_NewFrame()
|
|
|
ImGui_ImplDX10_Data* bd = ImGui_ImplDX10_GetBackendData();
|
|
|
IM_ASSERT(bd != nullptr && "Context or backend not initialized! Did you call ImGui_ImplDX10_Init()?");
|
|
|
|
|
|
- if (!bd->pFontSampler)
|
|
|
+ if (!bd->pVertexShader)
|
|
|
ImGui_ImplDX10_CreateDeviceObjects();
|
|
|
}
|
|
|
|