Да, после возврата на geTexImage2D()
можно безопасно сбросить данные, которые вы ему передали. на самом деле, если вы этого не сделаете, у вас будет утечка памяти, как в этом коде:
int *getPixels()
{
int *pixels = new int[10];
pixels[0] = 1;
pixels[1] = 0;
pixels[1] = 1;
// etc...
}
glTexImage2D(..., getPixels());
Вы передаете указатель на буфер в вызов, но затем указатель теряется и, скорее всего, протекает. Что вам нужно сделать, это сохранить его и удалить после повторных вызовов:
int *pbuf = getPixels();
glTexImage2D(..., pbuf);
delete[] pbuf;
альтернативно, если текстура имеет постоянный размер, вы можете передать указатель на массив, находящийся в стеке:
{
int buf[10];
...
glTexImage2D(..., pbuf);
}
Наконец, если вы не хотите беспокоиться об указателях и массивах, вы можете использовать STL:
vector<int> buf;
fillPixels(buf);
getTexImage2D(..., buf.begin());