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ă.