Mip-map Generation Variant
Umožňuje mapy mip na textury, které nejsou vykreslení cíle.
Výklad
Mapy MIP jsou především používá k odstranění aliasy artefaktů v textury pod minimalizaci předem výpočet menší verzí systému struktury.I když tyto další textury spotřebovat paměti GPU – o 33 procent více než původní struktury – jsou také efektivnější vzhledem k tomu, že více jejich povrchu, která vyhoví v mezipaměti struktury GPU a její obsah dosažení vyšší využití.
U 3D scény doporučujeme mapy mip při paměti je k dispozici k uložení Další textury, protože jejich zvýšit výkon vykreslování a kvalitu obrázku.
Pokud je tato varianta zobrazena značné zvýšení výkonu, označuje, že používáte textury bez povolení mapy mip a tedy není vytěžit maximum z mezipaměti struktury.
Poznámky
Generování mapy MIP nucené při každém volání na ID3D11Device::CreateTexture2D , který vytvořil zdroj struktury.Konkrétně generování mapy mip nucené při předaný objekt D3D11_TEXTUR2D_DESC pDesc popisuje neměnnými shader prostředku. To je:
Člen BindFlags má pouze příznak D3D11_BIND_SHADER_RESOURCE nastaven.
Člen využití je nastavena na D3D11_USAGE_DEFUALT nebo D3D11_USAGE_IMMUTABLE.
Člen CPUAccessFlags je nastaven na hodnotu 0 (žádný přístup CPU).
Člen SampleDesc má jeho počtu členů nastaven na hodnotu 1 (žádné více ukázky proti aliasy (MSAA)).
Člen MipLevels je nastavena na hodnotu 1 (žádné existující mip mapy).
Když počáteční data pochází aplikací, formát struktury musí podporovat mapy mip automatické generování – stanovený D3D11_FORMAT_SUPPORT_MIP_AUTOGEN – není-li formát BC1, BC2 nebo BC3; v opačném případě struktury se nemění a žádné mapy mip jsou generovány, pokud je zadána počáteční data.
Je-li mapy mip byly automaticky generovány pro struktury, zavolá na ID3D11Device::CreateShaderResourceView úpravou během přehrávání používat řetězu mip odebraných struktury.
Příklad
Generování mapy Mip variant lze reprodukovat pomocí kódu nějak takto:
D3D11_TEXTURE2D_DESC texture_description;
// ...
texture_description.MipLevels = 0; // generate a full mipchain
std::vector<D3D11_SUBRESOURCE_DATA> initial_data(num_mips);
for (auto&& mip_level : initial_data)
{
// fill mip_level with the application-supplied initial data
}
d3d_device->CreateTexture2D(&texture_description, initial_data.data(), &texture)
Chcete-li vytvořit struktury, který má úplný řetěz mip, nastavte D3D11_TEXTURE2D_DESC::MipLevels na hodnotu 0.Počet úrovní mip v úplný řetěz mip je floor(log2(n) + 1), kde n je největší rozměr struktury.
Mějte na paměti, která při poskytování počátečních dat k CreateTexture2D, je třeba zadat objekt D3D11_SUBRESOURCE_DATA pro každou úroveň mip.
[!POZNÁMKA]
Pokud chcete zadat vlastní mip úrovně obsah namísto vygenerovaly automaticky, musíte vytvořit své textury pomocí obrázek editor, který podporuje mapované mip textury a potom načíst soubor a mezních hodnot mip k CreateTexture2D.