다음을 통해 공유


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배인 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

추가 정보

리소스 구조