传递给Texture类(SFML)中的update方法的像素数组如何以内存方式管理?这些是我的一些猜测:
弱指针保存在纹理实例中;这意味着必须保留指向您自己的像素数组的指针并自行管理。
数组由纹理复制和管理(这也意味着每次再次调用更新方法时,前一个都被解除分配)。
第二个猜测可以证明这个可以多次更新纹理:
auto newPixels = new sf::Uint8[WIDTH * HEIGHT * 4];
... //do stuff to pixels
texture.update(newPixels);
每次更新纹理时重新分配像素的位置。否则(如果像素只是作为弱指针存储而没有被管理/解除分配/分配),则需要采用不同的方法,其中像素由用户管理...
提前感谢您的回答:)
答案 0 :(得分:0)
SFML是开源的。你不需要猜测或在这里问。你可以自己阅读:
https://github.com/SFML/SFML/blob/master/src/SFML/Graphics/Texture.cpp#L390
具体来说,指针传递给glTexSubImage2D OpenGL方法。