D3D10_MAPPED_TEXTURE2D構造体 (d3d10.h)

2D テクスチャ内 のサブリソース データへのアクセスを提供します。

構文

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

メンバー

pData

型: void*

データへのポインター。

RowPitch

型: UINT

圧縮されていないテクスチャの 1 行のピッチ、幅、または物理サイズ (バイト単位)。 ブロック圧縮テクスチャは 4 x 4 ブロックでエンコードされます ( 仮想サイズと物理サイズを参照)。そのため、 RowPitch は 4 x 4 テクセルのブロック内のバイト数です。

注釈

この構造体は、 Map の呼び出しで使用されます。

行のピッチを示すために、次の図に示すように、ミップマップ レベルを持つ非圧縮の 2D テクスチャを想定します。

ミップマップ レベルを含む非圧縮の 2D テクスチャの図

次の図のように、1 つの平面に描画された最上位レベルのテクスチャを視覚化します。

単一平面の図

ただし、メモリ内の各要素の実際のレイアウトは、次の図のようになります。

メモリ内の行ピッチの図

この例では、行ピッチには 5 つの要素 (1 行) があり、そのサイズは要素あたりのバイト数の 5 倍になります。

行ピッチを使用して、単一の 2D テクスチャ プレーン内の行間にポインターを移動します。

たとえば、3 番目のミップマップ レベルのデータにアクセスするには、浮動小数点テクスチャの次の例に示すように 、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));
}

要件

要件
Header d3d10.h

こちらもご覧ください

リソース構造