memorie de textură Cudaarray - lucru cu memoria de textură

Ca bază pentru acest tip de memorie se comportă ca un container special cudaArray, care este o cutie neagră pentru aplicație. Utilizarea cudaArray justificată atunci când dorim să creăm structuri cu două sau trei-dimensionale, sau au transformări importante care unitatea de procesare vizuală poate efectua hardware-ul cu datele originale:

§ să coordoneze normalizare (traducere [W, H] => [0,1]).

- Clema - Coordonata prins la limita;

- Wrap - coordonate împachetări.

§ Filtrarea (atunci când se aplică pentru flotorului de coordonate):

- Punctul - înapoi în apropiere de valoarea setată;

- Liniar - a făcut interpolare biliniară.

Pentru a utiliza cudaArray de memorie textura este necesară pentru a declara o variabilă, un pointer la cudaArray:

cudaMallocArray (struct cudaArray ** arrayPtr, const struct cudaChannelFormatDesc * channelDesc, latime size_t, inaltime size_t);

- arrayPtr - pointer la cudaArray;

- channelDesc - descrierea canalului;

- lățimea - lățimea șirului;

- înălțime - înălțimea de matrice.

Apoi, copiați datele din memoria alocată:

cudaMemcpyToArray (struct cudaArray * dst, size_t wOffset, size_t hOffset, const void * src, numărul size_t, enum cudaMemcpyKind fel);

- arrayPtr - pointer la cudaArray;

- wOffset - orizontală de offset când se leagă la matrice;

- hOffset - deviația verticală atunci când este legat la matrice;

- src - o matrice în memorie gazdă, la care este copiat;

- conta - dimensiunea datelor în octeți;

- un fel - direcția de copiere.

Odată ce datele sunt copiate, puteți fixa cudaArray matrice la textura:

cudaBindTextureToArray (const struct textureReference * tex, const struct cudaArray * array, const struct cudaChannelFormatDesc * desc);

- tex - a declarat textura;

- array - matrice in cudaArray, care leagă textura;

- channelDesc - Descrierea canalului.

În aparatele utilizate funcțiile care extrag semnificație de textura:

tex1D (texRef tex, float x);

- tex - a declarat textura;

- x - excavate valorile indicelui într-o matrice liniară.

tex2D (texRef tex, float x, float y);

- tex - a declarat textura;

- x, y - valorile excavată indici într-o matrice bidimensională.

tex3D (texRef tex, float x, float y, float z);

- tex - a declarat textura;

- x, y, z - excavată indexează valori în matrice tridimensională.

După utilizare, este necesar să se decupleze textura exact la fel ca și liniară.