例如,如果我创建像素阵列,像这样:将像素传递给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