Ответ 1
В принципе, ваше предположение "что-то нужно делать с GPU"? является правильным.
SDL_Surface
используется при рендеринге программного обеспечения. С программным рендерингом, как saloomi2012 правильно заметили, вы используете обычную RAM для хранения данных изображения. Таким образом, в большинстве случаев вы можете напрямую обращаться к буферу данных, связанному с поверхностью, изменяя его содержимое, то есть использовать CPU, следовательно, имя программного обеспечения.
SDL_Texture
, с другой стороны, используется в аппаратном рендеринге, текстуры хранятся в VRAM, и у вас нет доступа к нему напрямую, как с SDL_Surface
. Операции рендеринга ускоряются с помощью GPU, используя внутренний интерфейс OpenGL или DirectX (доступный только для Windows), который, в свою очередь, использует ваше видеооборудование, следовательно, имя аппаратного рендеринга.
Излишне говорить, что аппаратное рендеринг на порядок быстрее, чем рендеринг программного обеспечения, и его всегда следует рассматривать как основной вариант.