Dela via


Direct3D 11.2-funktioner

Följande funktioner har lagts till i Direct3D 11.2, som ingår i Windows 8.1, Windows RT 8.1 och Windows Server 2012 R2.

Tillagda resurser

Med Direct3D 11.2 kan du skapa tillagda resurser som kan betraktas som stora logiska resurser som använder små mängder fysiskt minne. Tillagda resurser är användbara (till exempel) med terräng i spel och appgränssnitt.

Tillagda resurser skapas genom att ange flaggan D3D11_RESOURCE_MISC_TILED. Använd följande API för att arbeta med tillagda resurser:

Mer information om tillagda resurser finns i tillagda resurser.

Kontrollera stöd för tillagda resurser

Innan du använder tillagda resurser måste du ta reda på om enheten stöder tillagda resurser. Så här söker du efter stöd för tillagda resurser:

HRESULT hr = D3D11CreateDevice(
    nullptr,                    // Specify nullptr to use the default adapter.
    D3D_DRIVER_TYPE_HARDWARE,   // Create a device using the hardware graphics driver.
    0,                          // Should be 0 unless the driver is D3D_DRIVER_TYPE_SOFTWARE.
    creationFlags,              // Set debug and Direct2D compatibility flags.
    featureLevels,              // List of feature levels this app can support.
    ARRAYSIZE(featureLevels),   // Size of the list above.
    D3D11_SDK_VERSION,          // Always set this to D3D11_SDK_VERSION for Windows Store apps.
    &device,                    // Returns the Direct3D device created.
    &m_d3dFeatureLevel,         // Returns feature level of device created.
    &context                    // Returns the device immediate context.
    );

if (SUCCEEDED(hr))
{
    D3D11_FEATURE_DATA_D3D11_OPTIONS1 featureData;
    DX::ThrowIfFailed(
        device->CheckFeatureSupport(D3D11_FEATURE_D3D11_OPTIONS1, &featureData, sizeof(featureData))
        );

    m_tiledResourcesTier = featureData.TiledResourcesTier;
}

Utökat stöd för WARP-enheter

Direct3D 11.2 utökar stödet för WARP- enheter, som du skapar genom att skicka D3D_DRIVER_TYPE_WARP i parametern DriverType för D3D11CreateDevice. WARP-programvaruåtergivningen i Direct3D 11.2 lägger till fullständigt stöd för Direct3D funktionsnivå 11_1, inklusive tillagda resurser, IDXGIDevice3::Trim, delade BCn-ytor, minblend och kartstandard. Double-stöd i HLSL-skuggningar har också aktiverats tillsammans med stöd för 16x MSAA.

Kommentera grafikkommandon

Med Direct3D 11.2 kan du kommentera grafikkommandon med följande API:

HLSL-skuggningslänkning

Windows 8.1 lägger till separat kompilering och länkning av HLSL-skuggningar, vilket gör det möjligt för grafikprogram programmerare att skapa förkompilerade HLSL-funktioner, paketera dem i bibliotek och länka dem till fullständiga skuggningar vid körning. Detta motsvarar i stort sett C/C++-separat kompilering, bibliotek och länkning, och gör det möjligt för programmerare att skriva förkompilerad HLSL-kod när mer information blir tillgänglig för att slutföra beräkningen. Mer information om hur du använder skuggningslänkning finns i Using shader linking.

Slutför de här stegen för att skapa en slutlig skuggning med dynamisk länkning vid körning.

Om du vill skapa och använda skuggningslänkning

  1. Skapa ett ID3D11Linker- länkobjekt som representerar en länkkontext. Det går inte att använda en enda kontext för att skapa flera skuggningar. en länkkontext används för att skapa en enda skuggning och sedan kastas länkkontexten bort.
  2. Använd D3DLoadModule för att läsa in och ange bibliotek från sina biblioteksblobar.
  3. Använd D3DLoadModule för att läsa in och ange en skuggningsblob för post, eller skapa en FLG-skuggning.
  4. Använd ID3D11Module::CreateInstance för att skapa ID3D11ModuleInstance- objekt och anropa sedan funktioner på dessa objekt för att koppla om resurser till deras sista fack.
  5. Lägg till biblioteken i länkaren och anropa sedan ID3D11Linker::Link för att skapa slutlig skuggningsbytekod som sedan kan läsas in och användas i körningen precis som en helt förkompilerad och länkad skuggning.

Funktionslänkningsdiagram (FLG)

Windows 8.1 lägger också till FLG (Function Linking Graph). Du kan använda FLG för att konstruera skuggningar som består av en sekvens med förkompilerade funktionsanrop som skickar värden till varandra. När du använder FLG behöver du inte skriva HLSL och anropa HLSL-kompilatorn. I stället anges skuggningsstrukturen programmatiskt med hjälp av C++ API-anrop. FLG-noder representerar signaturer för in- och utdata och anrop av förkompilerade biblioteksfunktioner. Ordningen för att registrera funktionsanropsnoderna definierar sekvensen med anrop. Indatasignaturnoden måste anges först, medan utdatasignaturnoden måste anges sist. FLG-kanter definierar hur värden skickas från en nod till en annan. Datatyperna för överförda värden måste vara desamma. det finns ingen implicit typkonvertering. Form- och swizzling-regler följer HLSL-beteendet och värden kan endast skickas framåt i den här sekvensen. Information om FLG API finns i ID3D11FunctionLinkingGraph.

Inkorgens HLSL-kompilator

HLSL-kompilatorn är nu inkorg i Windows 8.1 och senare. Nu kan de flesta API:er för skuggningsprogrammering användas i Windows Store-appar som har skapats för Windows 8.1 och senare. Många API:er för skuggningsprogrammering kunde inte användas i Windows Store-appar som har skapats för Windows 8. referenssidorna för dessa API:er har markerats med en anteckning. Men vissa skuggnings-API:er (till exempel D3DCompileFromFile) kan fortfarande bara användas för att utveckla Windows Store-appar och inte i appar som du skickar till Windows Store. referenssidorna för dessa API:er är fortfarande markerade med en anteckning.

Nyheter i Direct3D 11