Dela via


Texturer med flera element (Direct3D 9)

Traditionella texturer anses vara enelementsstrukturer. Texturer med flera element gör det möjligt för program att skriva samtidigt till flera element i en struktur från pixelskuggningen. Resultatet i nästa återgivningspass är att ett program kan använda ett eller flera av elementen som en textur med ett element , det vill: som indata till pixelskuggningen. Dessa ytterligare element kan betraktas som ett tillfälligt lager för mellanliggande resultat som kommer att användas i ett senare pass av programmet.

Den första generationen maskinvara som exponerar den här funktionen har följande begränsningar:

  • Alla texturytor med flera element allokeras automatiskt. Den här begränsningen åtgärdas genom att behandla detta som en ny typ av ytformat med flera RGBA-kanaler mellanlagrade.
  • Alla element i strukturen för flera element kan ha samma bitdjup. Den här begränsningen uttrycks av namnet på de nya ytformaten.
  • En struktur med flera element kan inte vara primär/visningsbar. Med andra ord får den endast vara utanför skärmen. Den här begränsningen uttrycks av uppräkning i ytformat.
  • Ingen gitter, alfatest, fogging, blandning, raster-op eller maskering tillåts. Ingen bearbetning efter pixelskuggning görs, förutom z-test- och stenciltestet.
  • Strukturen kan inte vara en mipmap. Det går inte att skapa mip-kedjan.
  • Samma element kan inte anges som en struktur samtidigt som det är ett återgivningsmål. Olika element i samma strukturyta med flera element kan dock samtidigt vara texturer och rendera mål.
  • Inga antialias stöds.
  • Texturytor med flera element kan inte filtreras när de används som textur. Den här begränsningen kan verifieras med CheckDeviceFormat.
  • Texturytor med flera element kan inte låsas.
  • Mer än en texturyta med flera element kan användas samtidigt genom att tilldela var och en till olika steg, precis som med normala texturer.
  • Texturytor med flera element stöder konvertering av gamma från 2,2 till 1,0 vid en läsåtgärd, precis som med andra texturformat.
  • Vissa implementeringar tillämpar inte skrivmasken för utdata (D3DRS_COLORWRITEENABLE). De som kan ha oberoende färgskrivningsmasker. Detta uttrycks med hjälp av en ny funktionsbit. Antalet tillgängliga oberoende färgskrivningsmasker är lika med det maximala antalet element som enheten kan använda.
  • Clear rensar alla element i strukturen med flera element som anges som återgivningsmål.

Användningen av texturer med flera element följer dessa steg:

  1. Program identifierar stöd för den här funktionen genom att söka efter tillgängligheten för texturformat med flera element.
  2. Programmet skapar dessa ytor genom att anropa CreateTexture.
  3. Programmet anger ytan som ett återgivningsmål med hjälp av anropet SetRenderTarget. Pixelskuggningen ger utdata till ytorna med hjälp av instruktionen mov – ps.
  4. SetTexture anropas för att ange en texturyta med flera element till en viss fas. Precis som med andra texturer får samma yta ställas in på flera steg samtidigt.
  5. SetSamplerState anropas för att ange D3DSAMP_ELEMENTINDEX till lämpligt elementnummer i den textur med flera element som exempelexempel på. Standardvärdet för det här tillståndet är 0, vilket innebär att icke-flera element-texturer fungerar. Om du ställer in det här tillståndet på ett olämpligt tal resulterar det i ett odefinierat beteende – om strukturen för flera element bara är två element bred men exempeltagaren uppmanas att ta exempel från det fjärde elementet, till exempel.

API-stöd

Följande är en sammanfattning av API-elementen som stöder texturer med flera element:

  • Det D3DFMT_MULTI2_ARGB8 ytformatet uttrycker formatets interleaved karaktär.

  • Det D3DSAMP_ELEMENTINDEX sampler-tillståndet anger vilket elementindex som ska användas.

  • Följande återgivningstillstånd stöder texturer med flera element:

    • D3DRS_COLORWRITEENABLE1
    • D3DRS_COLORWRITEENABLE2
    • D3DRS_COLORWRITEENABLE3

    D3DRS_COLORWRITEENABLE gäller för återgivning av mål (eller element) noll.

  • Flaggan D3DPMISCCAPS_INDEPENDENTWRITEMASKS anger att enheten stöder oberoende skrivmasker för flera elementstrukturer eller flera återgivningsmål.

Pixel Pipeline