struktur D3D10_MAPPED_TEXTURE2D (d3d10.h)

Menyediakan akses ke data sub sumber daya dalam tekstur 2D.

Sintaks

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

Anggota

pData

Jenis: batal*

Arahkan ke data.

RowPitch

Jenis: UINT

Pitch, atau lebar, atau ukuran fisik (dalam byte), dari satu baris tekstur yang tidak dikompresi. Tekstur terkompresi blok dikodekan dalam blok 4x4 (lihat ukuran virtual vs ukuran fisik) ; oleh karena itu, RowPitch adalah jumlah byte dalam blok 4x4 texel.

Keterangan

Struktur ini digunakan dalam panggilan ke Peta.

Untuk mengilustrasikan pitch baris, asumsikan tekstur 2D yang tidak dikompresi dengan tingkat mipmap, seperti yang ditunjukkan dalam ilustrasi berikut.

Ilustrasi tekstur 2D yang tidak dikompresi dengan tingkat mipmap

Visualisasikan tekstur tingkat atas yang digambar dalam satu bidang seperti ilustrasi berikut.

Ilustrasi bidang tunggal

Namun, tata letak aktual dari setiap elemen dalam memori terlihat lebih seperti ilustrasi berikut.

Ilustrasi pitch baris dalam memori

Untuk contoh ini, pitch baris mencakup 5 elemen (satu baris), yang ukurannya akan lima kali jumlah byte per elemen.

Gunakan pitch baris untuk memajukan penunjuk di antara baris dalam satu bidang tekstur 2D.

Contoh

Untuk mengakses data, misalnya, tingkat mipmap ketiga, Anda harus mentransmisikan penunjuk pData seperti yang ditunjukkan dalam contoh berikut untuk tekstur floating-point.

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));
}

Persyaratan

Persyaratan Nilai
Header d3d10.h

Lihat juga

Struktur Sumber Daya