Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Prostředek vyrovnávací paměti je kolekce dat, která jsou plně specifikována a seskupena do prvků. Vyrovnávací paměti ukládají data, jako jsou souřadnice textur ve vyrovnávací paměti vrcholů , indexy ve vyrovnávací paměti indexů , data konstant shaderu v konstantní vyrovnávací paměti , vektory pozic, normální vektory nebo stavy zařízení.
Prvek vyrovnávací paměti se skládá z 1 až 4 komponent. Prvky vyrovnávací paměti mohou obsahovat sbalené datové hodnoty (například hodnoty povrchů R8G8B8A8), jedno 8bitové celé číslo nebo čtyři 32bitové plovoucí číselné hodnoty.
Vyrovnávací paměť se vytvoří jako nestrukturovaný prostředek. Vzhledem k tomu, že je nestrukturovaná, vyrovnávací paměť nemůže obsahovat žádné úrovně mipmap, nemůže být filtrována během čtení a nemůže být použita s vícenásobným vzorkováním.
typy vyrovnávací paměti
Níže jsou uvedeny typy prostředků vyrovnávací paměti podporované Direct3D 11.
vyrovnávací paměť vrcholů
Vertex buffer obsahuje data vrcholů použitá k definování vaší geometrie. Vrcholová data zahrnují souřadnice polohy, barevná data, data souřadnic textury, normálová data a tak dále.
Nejjednodušším příkladem vyrovnávací paměti vrcholů je taková, která obsahuje pouze data polohy. Dá se vizualizovat jako na následujícím obrázku.
Častěji obsahuje vyrovnávací paměť vrcholů všechna data potřebná k plnému specifikování 3D vrcholů. Příkladem může být vyrovnávací paměť vrcholů, která obsahuje polohu pro každý vrchol, normálové vektory a souřadnice textury. Tato data bývají obvykle uspořádána jako sady prvků pro každý vrchol, jak je zobrazeno na následujícím obrázku.
Tento vyrovnávací buffer obsahuje data o jednotlivých vrcholech; každý vrchol ukládá tři prvky (pozici, normálu a texturové souřadnice). Pozice a normály se obvykle zadávají pomocí tří 32bitových plovoucích bodů a souřadnice textury pomocí dvou 32bitových plovoucích bodů.
Pokud chcete získat přístup k datům z vyrovnávací paměti vrcholů, potřebujete vědět, ke kterému vrcholu se má přistupovat, a navíc následující další parametry vyrovnávací paměti:
- Posun – počet bajtů od začátku vyrovnávací paměti k datům pro první vrchol.
- BaseVertexLocation – počet bajtů od posunu k prvnímu vrcholu používanému příslušným voláním kreslení.
Než vytvoříte vyrovnávací paměť pro vrcholy, musíte nejprve definovat její rozložení. Po vytvoření objektu rozložení vstupu jej svážete s fází vstupního assembleru (IA).
vyrovnávací paměť indexu
Indexové vyrovnávací paměti obsahují celočíselné posuny ve vyrovnávacích pamětech vrcholů a slouží k efektivnějšímu vykreslování primitiv. Indexový buffer obsahuje sekvenční sadu 16bitových nebo 32bitových indexů; každý index se používá k identifikaci vrcholu ve vyrovnávací paměti vrcholů. Indexový buffer je možné vizualizovat jako na následujícím obrázku.
ukázka obrázku vyrovnávací paměti indexu 
Po sobě jdoucí indexy uložené v indexovém bufferu jsou umístěny s následujícími parametry:
- Offset – počet bajtů od základní adresy indexového bufferu.
- StartIndexLocation – určuje počáteční prvek vyrovnávací paměti indexu ze základní adresy a offsetu. Počáteční umístění představuje první index, který se má vykreslit.
- IndexCount – počet indexů, které se mají vykreslit.
Začátek vyrovnávací paměti indexu = Základní adresa vyrovnávací paměti indexu + Offset (bajty) + StartIndexLocation * ElementSize (bajty);
V tomto výpočtu je ElementSize velikost každého prvku vyrovnávací paměti indexu, což je buď dva, nebo čtyři bajty.
konstantní vyrovnávací paměť
Konstantní buffer umožňuje efektivní poskytování dat konstant shaderu do potrubí. K uložení výsledků fáze datového výstupu můžete použít konstantní vyrovnávací paměť. Pokud jde o koncepci, konstantní vyrovnávací paměť vypadá stejně jako vyrovnávací paměť pro vrcholy s jedním prvkem, jak je znázorněno na následujícím obrázku.
Každý prvek ukládá konstantu s 1 až 4 komponentami, určenou formátem uložených dat.
Konstantní vyrovnávací paměť může používat pouze jeden příznak vazby, který nelze kombinovat s žádným jiným příznakem vazby.
Ke čtení konstantního bufferu shaderu ze shaderu použijte načítací funkci HLSL. Každá fáze shaderu umožňuje až 15 vyrovnávacích pamětí shaderu; každá vyrovnávací paměť může obsahovat až 4096 konstant.
související témata