例如,如果我創建像素陣列,像這樣:將像素傳遞給glTexImage2D()後會發生什麼?
int *getPixels()
{
int *pixels = new int[10];
pixels[0] = 1;
pixels[1] = 0;
pixels[1] = 1;
// etc...
}
glTexImage2D(..., getPixels());
不glTexImage2D使用該引用或像素複製到它自己的內存?
如果答案是前者,那麼我應該做以下幾點?
int *p = getPixels();
glTexImage2D(..., p);
/* Just changed to delete[], because delete
* would only delete the first element! */
delete[] p;
我不確定PC上是否出現這種情況,但是在控制檯上,紋理上傳功能通常只是將指針存儲到紋理中,併爲以後的時間安排DMA傳輸,因此只要函數返回,就不能釋放內存。 – n0rd 2012-01-23 13:04:55