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
- WARP-eszközök kiterjesztett támogatása
- Grafikus parancsok jegyzetelése
- HLSL-árnyékoló
- Beérkezett üzenetek HLSL-fordító
- Kapcsolódó témakörök
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:
- ID3D11Device2::GetResourceTiling
- ID3D11DeviceContext2::UpdateTiles
- ID3D11DeviceContext2::UpdateTileMappings
- ID3D11DeviceContext2::CopyTiles
- ID3D11DeviceContext2::CopyTileMappings
- ID3D11DeviceContext2::ResizeTilePool
- ID3D11DeviceContext2::TiledResourceBarrier
- D3D11_DEBUG_FEATURE_DISABLE_TILED_RESOURCE_MAPPING_TRACKING_AND_VALIDATION jelölő ID3D11Debug::SetFeatureMask
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:
- ID3D11DeviceContext2::IsAnnotationEnabled
- ID3D11DeviceContext2::BeginEventInt
- ID3D11DeviceContext2::SetMarkerInt
- ID3D11DeviceContext2::EndEvent
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
- 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.
- A D3DLoadModule használatával betölthet és beállíthat kódtárakat a tárblobokból.
- 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.
- 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.
- 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.
Kapcsolódó témakörök