1

传递给 Texture 类 (SFML) 中的更新方法的像素数组是如何在内存方面进行管理的?这些是我的一些猜测:

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

  2. 该数组由纹理复制和管理(这也意味着每次再次调用更新方法时,都会释放前一个)。

第二个猜测可以证明多次更新纹理是合理的:

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

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

提前感谢您的任何答案:)

4

1 回答 1

0

SFML 是开源的。您无需在这里猜测或询问。您可以自己阅读:

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

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

于 2016-11-29T11:17:53.937 回答