В основному ваше припущення "має щось робити з графічним процесором?" правильно.
SDL_Surface
використовується при отриманні програмного забезпечення. За допомогою програмного візуалізації, як правильно помітили saloomi2012 , ви використовуєте звичайну оперативну пам’ять для зберігання даних зображень. Таким чином, у більшості випадків ви можете отримати доступ до буфера даних, пов'язаного з поверхнею, безпосередньо, змінюючи його вміст, тобто він використовує центральний процесор, звідси і назва програмного забезпечення .
SDL_Texture
з іншого боку, використовується в апаратному візуалізації, текстури зберігаються у VRAM, і ви не маєте до нього доступу безпосередньо, як SDL_Surface
. Операції візуалізації прискорюються графічним процесором, використовуючи внутрішньо API OpenGL або DirectX (доступно лише у Windows), які, у свою чергу, використовують ваше відеоапаратуру, отже, і назва апаратного візуалізації.
Само собою зрозуміло, що апаратне надання на порядок швидше, ніж програмне забезпечення, і його слід завжди розглядати як основний варіант.
SDL_Texture
іSDL_Surface
так само , якSDL_Renderer
. Загалом,SDL_Texture
це те, що використовується для візуалізації, але коли ви завантажуєте інформацію про текстуру за допомогоюSDL_Image
абоSDL_ttf
, ви отримуватимете дані якSDL_Surface