Каким образом массив пикселей, передаваемый методу обновления в классе Texture (SFML), управляется с точки зрения памяти? Вот некоторые из моих предположений:
Слабый указатель сохраняется внутри экземпляра текстуры; Это означает, что необходимо сохранить указатель на собственный массив пикселей и управлять им самостоятельно.
Массив копируется и управляется текстурой (что также означает, что каждый раз, когда метод обновления вызывается снова, предыдущий освобождается).
Второе предположение оправдало бы этот для обновления текстуры несколько раз:
auto newPixels = new sf::Uint8[WIDTH * HEIGHT * 4];
... //do stuff to pixels
texture.update(newPixels);
Где пиксели перераспределяются каждый раз, когда текстура обновляется. В противном случае (если пиксели просто хранятся в виде слабого указателя, а не управляются / освобождаются / выделяются), необходим другой подход, когда пиксели управляются пользователем …
Заранее спасибо за любые ответы 🙂
SFML является открытым исходным кодом. Вам не нужно угадывать или спрашивать здесь. Вы можете просто прочитать это для себя:
https://github.com/SFML/SFML/blob/master/src/SFML/Graphics/Texture.cpp#L390
В частности, указатель передается glTexSubImage2D Метод OpenGL.
Других решений пока нет …