Управление памятью для метода обновления в манипуляциях с пикселями текстуры

Каким образом массив пикселей, передаваемый методу обновления в классе Texture (SFML), управляется с точки зрения памяти? Вот некоторые из моих предположений:

  1. Слабый указатель сохраняется внутри экземпляра текстуры; Это означает, что необходимо сохранить указатель на собственный массив пикселей и управлять им самостоятельно.

  2. Массив копируется и управляется текстурой (что также означает, что каждый раз, когда метод обновления вызывается снова, предыдущий освобождается).

Второе предположение оправдало бы этот для обновления текстуры несколько раз:

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

Где пиксели перераспределяются каждый раз, когда текстура обновляется. В противном случае (если пиксели просто хранятся в виде слабого указателя, а не управляются / освобождаются / выделяются), необходим другой подход, когда пиксели управляются пользователем …

Заранее спасибо за любые ответы 🙂

1

Решение

SFML является открытым исходным кодом. Вам не нужно угадывать или спрашивать здесь. Вы можете просто прочитать это для себя:

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

В частности, указатель передается glTexSubImage2D Метод OpenGL.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]