Zasadniczo twoje założenie "ma coś wspólnego z GPU?" jest w porządku.
SDL_Surfacejest używany w renderowaniu oprogramowania . Z renderowaniem programowym, jak słusznie zauważył saloomi2012 , używasz zwykłej pamięci RAM do przechowywania danych obrazu. W większości przypadków można więc uzyskać bezpośredni dostęp do bufora danych związanego z powierzchnią, modyfikując jego zawartość, tzn. Korzysta z procesora, stąd nazwa oprogramowania .
SDL_Texturez drugiej strony jest używany w renderowaniu sprzętowym , tekstury są przechowywane w pamięci VRAM i nie masz do nich bezpośredniego dostępu, jak w przypadku SDL_Surface. Operacje renderowania są przyspieszane przez procesor graficzny, używając wewnętrznie API OpenGL lub DirectX (dostępne tylko w systemie Windows), które z kolei używają sprzętu wideo, stąd nazwa renderowania sprzętowego .
Nie trzeba dodawać, że renderowanie sprzętowe jest o rząd wielkości szybsze niż renderowanie programowe i zawsze powinno być traktowane jako opcja podstawowa.
SDL_TextureaSDL_SurfacetakżeSDL_Renderer. Ogólnie rzecz biorąc,SDL_Texturejest to , co jest używane do renderowania, ale kiedySDL_ImageSDL_ttfSDL_Surface