Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En texturresurs är en strukturerad samling data som utformats för att lagra texlar. En texel representerar den minsta enheten i en struktur som kan läsas eller skrivas till av pipelinen. Till skillnad från buffertar kan texturer, när de läses av skuggningsenheter, filtreras av texturprovtagare. Typen av textur påverkar hur strukturen filtreras. Varje texel innehåller 1 till 4 komponenter, ordnade i något av de DXGI-format som definieras av DXGI_FORMAT uppräkning.
Strukturer skapas som en strukturerad resurs med en känd storlek. Varje textur kan dock vara typad eller typfri när resursen skapas, så länge typen är fullt specificerad med en vy när texturen är bunden till pipeline.
Strukturtyper
Det finns flera typer av texturer: 1D, 2D, 3D, som var och en kan skapas med eller utan mipmaps. Direct3D 11 har också stöd för strukturmatriser och flersamplade texturer.
1D-texturer
En 1D-struktur i sin enklaste form innehåller texturdata som kan åtgärdas med en enda strukturkoordinat; Det kan visualiseras som en matris med texels, som du ser i följande bild. 1D-texturer representeras av gränssnittet ID3D11Texture1D.
Varje texel innehåller ett antal färgkomponenter beroende på formatet på de data som lagras. Om du lägger till mer komplexitet kan du skapa en 1D-struktur med mipmap-nivåer, som du ser i följande bild.
En mipmap-nivå är en textur som är en tvåpotens mindre än nivån ovanför. Den översta nivån innehåller mest information, varje efterföljande nivå är mindre. För en 1D-mipmap innehåller den minsta nivån en texel. Dessutom minskar MIP-nivåerna alltid ned till 1:1. När mipmaps genereras för en udda storleksstruktur är nästa lägre nivå alltid jämn storlek (förutom när den lägsta nivån når 1). Diagrammet illustrerar till exempel en 5x1-struktur vars nästa lägsta nivå är en 2x1-struktur, vars nästa (och sista) mip-nivå är en textur i storlek 1x1. Nivåerna identifieras av ett index som kallas lod (detaljnivå) som används för att komma åt den mindre strukturen vid återgivning av geometri som inte är lika nära kameran.
1D-texturmatriser
Direct3D 11 stöder också matriser med texturer. En 1D-strukturmatris representeras också av gränssnittet ID3D11Texture1D. En matris med 1D-texturer ser konceptuellt ut som följande bild.
Den här texturmatrisen innehåller tre texturer. Var och en av de tre texturerna har en texturbredd på 5 (vilket är antalet element i det första lagret). Varje struktur innehåller också en 3-lagers mipmap.
Alla texturmatriser i Direct3D är en homogen matris med texturer. Det innebär att varje struktur i en texturmatris måste ha samma dataformat och storlek (inklusive texturbredd och antal mipmap-nivåer). Du kan skapa texturmatriser av olika storlekar, så länge alla texturer i varje matris matchar i storlek.
2D-texturer och 2D-strukturmatriser
En Texture2D-resurs innehåller ett 2D-rutnät med texels. Varje texel kan adresseras av en u, v-vektor. Eftersom det är en strukturresurs kan den innehålla mipmap-nivåer och underresurser. 2D-texturer representeras av gränssnittet ID3D11Texture2D. En helt ifylld 2D-strukturresurs ser ut som följande bild.
Den här strukturresursen innehåller en enda 3x5-struktur med tre mipmap-nivåer.
En 2D-strukturmatrisresurs är en homogen matris med 2D-texturer. det vill: varje struktur har samma dataformat och dimensioner (inklusive mipmap-nivåer). En 2D-strukturmatris representeras också av gränssnittet ID3D11Texture2D. Den har en liknande layout som 1D-texturmatrisen förutom att texturerna nu innehåller 2D-data, som visas i följande bild.
Den här texturmatrisen innehåller tre texturer; varje struktur är 3x5 med två mipmap nivåer.
Använda en 2D-strukturmatris som en texturkub
En texturkub är en 2D-strukturmatris som innehåller 6 texturer, en för varje kub. En helt ifylld texturkub ser ut som följande bild.
En 2D-texturmatris som innehåller 6 texturer kan läsas inifrån shaders med kubkartans inbyggda funktioner, efter att de är bundna till pipelinen med en kubtexturvy. Texturkuber adresseras från skuggningen med en 3D-vektor som pekar ut från mitten av texturkuben.
Not
Enheter som du skapar med funktionsnivå 10_1 och senare kan stödja matriser med texturkuber där antalet texturer är lika med antalet texturkuber i en matris gånger sex. Enheter som du skapar med 10_0-funktionsnivå stödjer endast en enda texturkub med sex ansikten. Direct3D 11 stöder inte heller partiella kubkartor.
3D-texturer
En 3D-strukturresurs (även kallad volymstruktur) innehåller en 3D-volym av texlar. Eftersom det är en strukturresurs kan den innehålla mipmap-nivåer. 3D-texturer representeras av gränssnittet ID3D11Texture3D. En helt ifylld 3D-struktur ser ut som följande bild.
När en 3D-struktur mipmap-sektor är bunden som en återgivningsmålutdata (med en återgivningsmålvy) fungerar 3D-strukturen identiskt med en 2D-strukturmatris med n sektorer. Det specifika återgivningssegmentet väljs från geometri-skuggningssteget genom att deklarera en skalär komponent av utdata som systemvärdet SV_RenderTargetArrayIndex.
Det finns inget begrepp om en 3D-strukturmatris; Därför är en 3D-strukturunderresurs en enda mipmap-nivå.
Relaterade ämnen