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 텍스처를 가정합니다.
다음 그림과 같이 단일 평면에 그려진 최상위 텍스처를 시각화합니다.
그러나 메모리에 있는 각 요소의 실제 레이아웃은 다음 그림과 비슷합니다.
이 예제에서 행 피치는 요소당 바이트 수의 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 |