mirror of
				https://github.com/ocornut/imgui.git
				synced 2025-11-04 01:34:32 +00:00 
			
		
		
		
	Backends: DX11: create sampler outside of ImGui_ImplDX11_CreateFontsTexture().
This commit is contained in:
		@@ -364,21 +364,16 @@ static void ImGui_ImplDX11_CreateFontsTexture()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Store our identifier
 | 
					    // Store our identifier
 | 
				
			||||||
    io.Fonts->SetTexID((ImTextureID)bd->pFontTextureView);
 | 
					    io.Fonts->SetTexID((ImTextureID)bd->pFontTextureView);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Create texture sampler
 | 
					static void ImGui_ImplDX11_DestroyFontsTexture()
 | 
				
			||||||
    // (Bilinear sampling is required by default. Set 'io.Fonts->Flags |= ImFontAtlasFlags_NoBakedLines' or 'style.AntiAliasedLinesUseTex = false' to allow point/nearest sampling)
 | 
					{
 | 
				
			||||||
 | 
					    ImGui_ImplDX11_Data* bd = ImGui_ImplDX11_GetBackendData();
 | 
				
			||||||
 | 
					    if (bd->pFontTextureView)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        D3D11_SAMPLER_DESC desc;
 | 
					        bd->pFontTextureView->Release();
 | 
				
			||||||
        ZeroMemory(&desc, sizeof(desc));
 | 
					        bd->pFontTextureView = nullptr;
 | 
				
			||||||
        desc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
 | 
					        ImGui::GetIO().Fonts->SetTexID(0); // We copied data->pFontTextureView to io.Fonts->TexID so let's clear that as well.
 | 
				
			||||||
        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);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -531,6 +526,22 @@ bool    ImGui_ImplDX11_CreateDeviceObjects()
 | 
				
			|||||||
        bd->pd3dDevice->CreateDepthStencilState(&desc, &bd->pDepthStencilState);
 | 
					        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();
 | 
					    ImGui_ImplDX11_CreateFontsTexture();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return true;
 | 
					    return true;
 | 
				
			||||||
@@ -542,8 +553,9 @@ void    ImGui_ImplDX11_InvalidateDeviceObjects()
 | 
				
			|||||||
    if (!bd->pd3dDevice)
 | 
					    if (!bd->pd3dDevice)
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ImGui_ImplDX11_DestroyFontsTexture();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (bd->pFontSampler)           { bd->pFontSampler->Release(); bd->pFontSampler = nullptr; }
 | 
					    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->pIB)                    { bd->pIB->Release(); bd->pIB = nullptr; }
 | 
				
			||||||
    if (bd->pVB)                    { bd->pVB->Release(); bd->pVB = nullptr; }
 | 
					    if (bd->pVB)                    { bd->pVB->Release(); bd->pVB = nullptr; }
 | 
				
			||||||
    if (bd->pBlendState)            { bd->pBlendState->Release(); bd->pBlendState = nullptr; }
 | 
					    if (bd->pBlendState)            { bd->pBlendState->Release(); bd->pBlendState = nullptr; }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user