Megosztás a következőn keresztül:


Direct3D 11.2 funkciók

A Következő funkciók lettek hozzáadva a Direct3D 11.2-ben, amely a Windows 8.1, a Windows RT 8.1 és a Windows Server 2012 R2 része.

Csempézett erőforrások

A Direct3D 11.2 lehetővé teszi olyan csempézett erőforrások létrehozását, amelyek nagy logikai erőforrásoknak tekinthetők, amelyek kis mennyiségű fizikai memóriát használnak. A csempézett erőforrások hasznosak (például) a játékok terepével és az alkalmazás felhasználói felületével.

A csempézett erőforrások a D3D11_RESOURCE_MISC_TILED jelölő megadásával jönnek létre. A csempézett erőforrás használatához használja az alábbi API-t:

A csempézett erőforrásokról további információt Csempézett erőforrásokcímű témakörben talál.

Csempe típusú erőforrások támogatásának ellenőrzése

A csempézett erőforrások használata előtt meg kell tudnia, hogy az eszköz támogatja-e a csempézett erőforrásokat. Így ellenőrizheti a csempézett erőforrások támogatását:

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;
}

Kiterjesztett támogatás WARP-eszközökhöz

A Direct3D 11.2 kibővíti WARP-eszközök támogatását, amelyeket a D3D11CreateDeviceDriverType paraméterében D3D_DRIVER_TYPE_WARP továbbít. A Direct3D 11.2 WARP szoftvermegjelenítője teljes mértékben támogatja a Direct3D 11_1 funkciószint et, beleértve csempézett erőforrásokat, IDXGIDevice3::levágása, megosztott BCn-felületek, minblend és leképezési alapértelmezett. A HLSL-árnyékolók dupla támogatása, valamint a 16x MSAA támogatása is engedélyezett.

Grafikus parancsok jegyzetelése

A Direct3D 11.2 segítségével az alábbi API-val jegyzetelheti a grafikus parancsokat:

HLSL shader linking

A Windows 8.1 külön fordítást és összekapcsolást biztosít a HLSL-árnyékolókhoz, így a grafikus programozók előre összeállított HLSL-függvényeket hozhatnak létre, kódtárakba csomagolhatják őket, és futtatáskor teljes árnyékolókká kapcsolhatják őket. Ez lényegében egyenértékű a C/C++ külön fordításával, kódtárával és csatolásával, és lehetővé teszi a programozók számára, hogy előre összeállított HLSL-kódot írjanak, amikor további információ válik elérhetővé a számítás véglegesítéséhez. További információ az árnyékoló csatolásáról: Árnyékoló csatolásának használata.

Ezeket a lépéseket végrehajtva létrehoz egy végleges árnyékolót a dinamikus összekapcsolás használatával futásidőben.

Árnyékoló csatolási létrehozása és használata

  1. Hozzon létre egy ID3D11Linker linker objektumot, amely egy csatolási környezetet jelöl. Egyetlen környezet nem használható több árnyékoló létrehozásához; a csatolási környezet egyetlen árnyékoló létrehozására szolgál, majd a csatolási környezet el lesz vetve.
  2. A D3DLoadModule használatával betölthet és beállíthat kódtárakat a tárblobokból.
  3. A D3DLoadModule használatával betölthet és beállíthat egy bejegyzésárnyékoló-blobot, vagy létrehozhat egy FLG-árnyékolót.
  4. Használja ID3D11Module::CreateInstanceID3D11ModuleInstance objektumok létrehozásához, majd az objektumok függvényeinek meghívása erőforrások végleges tárolóhelyhez való újrakötéséhez.
  5. Adja hozzá a kódtárakat a csatolóhoz, majd hívja meg ID3D11Linker::Csatolás a végleges shader bájtkód létrehozásához, amelyet aztán betölthet és használhat a futtatókörnyezetben, ugyanúgy, mint egy teljesen előre összeállított és csatolt árnyékoló.

Függvény-összekapcsoló gráf (FLG)

A Windows 8.1 emellett hozzáadja a függvény-összekapcsolási gráfot (FLG). Az FLG használatával olyan árnyékolókat hozhat létre, amelyek előre összeállított függvényhívásokból állnak, amelyek értékeket adnak át egymásnak. Az FLG használatakor nem szükséges HLSL-t írni, és meghívni a HLSL-fordítót. Ehelyett a shader struktúra programozott módon van megadva C++ API-hívások használatával. Az FLG-csomópontok a bemeneti és kimeneti aláírásokat, valamint az előre összeállított kódtárfüggvények meghívását jelölik. A függvényhívási csomópontok regisztrálásának sorrendje határozza meg a hívássorozatot. Először a bemeneti aláírási csomópontot kell megadni, míg a kimeneti aláírási csomópontot utoljára kell megadni. Az FLG-élek határozzák meg, hogy az értékek hogyan legyenek átadva az egyik csomópontról a másikra. Az átadott értékek adattípusainak meg kell egyeznie; nincs implicit típuskonverzió. Az alakzat- és pörgő szabályok a HLSL viselkedését követik, és az értékek csak ebben a sorrendben továbbíthatók. További információ az FLG API-ról: ID3D11FunctionLinkingGraph.

Beérkezett üzenetek HLSL-fordítója

A HLSL-fordító mostantól a Windows 8.1-en és újabb verziókon is elérhető. A shader-programozáshoz használható API-k többsége mostantól a Windows 8.1-hez és újabb verziókhoz készült Windows Áruházbeli alkalmazásokban is használható. A árnyékoló programozására szolgáló számos API nem használható a Windows 8-hoz készült Windows Áruházbeli alkalmazásokban; az API-k referenciaoldalait megjegyzéssel jelöltük meg. Egyes árnyékoló API-k (például D3DCompileFromFile) továbbra is csak Windows Áruházbeli alkalmazások fejlesztésére használhatók, a Windows Áruházba beküldött alkalmazásokban nem; az API-k referenciaoldalai továbbra is megjegyzéssel vannak megjelölve.

A Direct3D 11 újdonságai