纹理像素操作中更新方法的内存管理

时间:2016-11-27 12:54:40

标签: c++ memory-management graphics sfml pixel-manipulation

传递给Texture类(SFML)中的update方法的像素数组如何以内存方式管理?这些是我的一些猜测:

  1. 弱指针保存在纹理实例中;这意味着必须保留指向您自己的像素数组的指针并自行管理。

  2. 数组由纹理复制和管理(这也意味着每次再次调用更新方法时,前一个都被解除分配)。

  3. 第二个猜测可以证明这个可以多次更新纹理:

    auto newPixels = new sf::Uint8[WIDTH * HEIGHT * 4];
    ... //do stuff to pixels
    texture.update(newPixels);
    

    每次更新纹理时重新分配像素的位置。否则(如果像素只是作为弱指针存储而没有被管理/解除分配/分配),则需要采用不同的方法,其中像素由用户管理...

    提前感谢您的回答:)

1 个答案:

答案 0 :(得分:0)

SFML是开源的。你不需要猜测或在这里问。你可以自己阅读:

https://github.com/SFML/SFML/blob/master/src/SFML/Graphics/Texture.cpp#L390

具体来说,指针传递给glTexSubImage2D OpenGL方法。