D3D10_MAPPED_TEXTURE2D 結構 (d3d10.h)

提供 2D 紋理中 子資源 數據的存取權。

語法

typedef struct D3D10_MAPPED_TEXTURE2D {
  void *pData;
  UINT RowPitch;
} D3D10_MAPPED_TEXTURE2D;

成員

pData

類型: void*

數據的指標。

RowPitch

類型: UINT

未壓縮紋理之一列的間距、寬度或實體大小 (以位元組為單位) 。 區塊壓縮紋理是以 4x4 區塊編碼, (請參閱 虛擬大小與實體大小) ;因此, RowPitch 是 4x4 材質區塊中的位元元組數目。

備註

這個結構用於對 Map 的呼叫。

為了說明數據列間距,假設具有 mipmap 層級的未壓縮 2D 紋理,如下圖所示。

含 mipmap 層級的未壓縮 2D 紋理圖例

以單一平面繪製的最上層紋理可視化,如下圖所示。

單一平面的圖例

不過,記憶體中每個元素的實際配置看起來更像下圖。

記憶體中數據列間距的圖例

在此範例中,數據列間距包含5個元素 (一個資料列) ,其大小會是每個元素位元組數目的五倍。

使用數據列間距,在單一 2D 紋理平面內的數據列之間前進指標。

例子

若要存取 中的數據,例如第三個 mipmap 層級,您必須轉換 pData 指標,如下列範例所示,以取得浮點紋理。

D3D10_MAPPED_TEXTURE2D mappedTexture;
if( SUCCEEDED( pTexture->Map( D3D10CalcSubresource(2, 0, 3), D3D10_MAP_WRITE_DISCARD, 0, &mappedTexture )))
{
    D3D10_TEXTURE2D_DESC desc;
    pTexture->GetDesc( &desc );
	
    // Compute the width and height of the third mipmap level
    const UINT WIDTH = desc.Width >> 2;
    const UINT HEIGHT = desc.Height >> 2;
	
    FLOAT* pTexels = (FLOAT*)mappedTexture.pData;
    for( UINT row = 0; row < HEIGHT; row++ )
    {
      UINT rowStart = row * mappedTexture.RowPitch/4;
      for( UINT col = 0; col < WIDTH; col++ )
      {
        pTexels[rowStart + col*4 + 0]; // Red
        pTexels[rowStart + col*4 + 1]; // Green
        pTexels[rowStart + col*4 + 2]; // Blue
        pTexels[rowStart + col*4 + 3]; // Alpha
      }
    }

    pTexture->Unmap(D3D10CalcSubresource(2, 0, 3));
}

規格需求

需求
標頭 d3d10.h

另請參閱

資源結構