Se per esempio creo un array di pixel, in questo modo:Cosa succede ai pixel dopo averli passati in glTexImage2D()?
int *getPixels()
{
int *pixels = new int[10];
pixels[0] = 1;
pixels[1] = 0;
pixels[1] = 1;
// etc...
}
glTexImage2D(..., getPixels());
fa glTexImage2D utilizzare tale riferimento o copiare i pixel in essa la propria memoria?
Se la risposta è la prima, allora dovrei fare quanto segue?
int *p = getPixels();
glTexImage2D(..., p);
/* Just changed to delete[], because delete
* would only delete the first element! */
delete[] p;
Non sono sicuro se questo è il caso su PC, ma su console le funzioni di caricamento texture molto spesso semplicemente memorizzano il puntatore su texture e programmano il trasferimento DMA per il tempo successivo, quindi non è possibile liberare memoria non appena la funzione viene restituita. – n0rd