Zasadniczo twoje założenie "ma coś wspólnego z GPU?" jest w porządku.
SDL_Surface
jest 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_Texture
z 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_Texture
aSDL_Surface
takżeSDL_Renderer
. Ogólnie rzecz biorąc,SDL_Texture
jest to , co jest używane do renderowania, ale kiedySDL_Image
SDL_ttf
SDL_Surface