纹理像素操作中更新方法的内存管理
Memory Management of update Method in Texture Pixel Manipulation
传递给纹理 class (SFML) 中的更新方法的像素数组是如何管理内存的?这些是我的一些猜测:
纹理实例内部保存了一个弱指针;这意味着需要保留一个指向自己的像素数组的指针并自行管理。
数组由纹理复制和管理(这也意味着每次再次调用update方法时,之前的被释放)。
第二个猜测证明这个多次更新纹理是合理的:
auto newPixels = new sf::Uint8[WIDTH * HEIGHT * 4];
... //do stuff to pixels
texture.update(newPixels);
每次更新纹理时都会重新分配像素。否则(如果像素只是存储为弱指针而不是 managed/deallocated/allocated),则需要采用不同的方法,其中像素由用户管理...
提前感谢您的任何回答:)
SFML 是开源的。您无需在这里猜测或询问。您可以自己阅读:
https://github.com/SFML/SFML/blob/master/src/SFML/Graphics/Texture.cpp#L390
具体来说,指针被传递给 glTexSubImage2D OpenGL 方法。
传递给纹理 class (SFML) 中的更新方法的像素数组是如何管理内存的?这些是我的一些猜测:
纹理实例内部保存了一个弱指针;这意味着需要保留一个指向自己的像素数组的指针并自行管理。
数组由纹理复制和管理(这也意味着每次再次调用update方法时,之前的被释放)。
第二个猜测证明这个多次更新纹理是合理的:
auto newPixels = new sf::Uint8[WIDTH * HEIGHT * 4];
... //do stuff to pixels
texture.update(newPixels);
每次更新纹理时都会重新分配像素。否则(如果像素只是存储为弱指针而不是 managed/deallocated/allocated),则需要采用不同的方法,其中像素由用户管理...
提前感谢您的任何回答:)
SFML 是开源的。您无需在这里猜测或询问。您可以自己阅读:
https://github.com/SFML/SFML/blob/master/src/SFML/Graphics/Texture.cpp#L390
具体来说,指针被传递给 glTexSubImage2D OpenGL 方法。