Czy ktoś może mi wyjaśnić prostymi słowami, jaka jest różnica między fakturą a powierzchnią? Widziałem, że jest używany w SDL2
jako SDL_Surface
i SDL_Texture
. SDL_Texture
jest tworzony, z SDL_Surface
którego z kolei jest tworzony z obrazu / bitmapy. Oba są zbiorem pikseli. Ale nie widzę głównej różnicy między nimi (czy ma coś wspólnego z GPU?)
Próbowałem to wygooglować, ale wszystkie znalezione wyjaśnienia były zbyt skomplikowane, aby je zrozumieć bez zagłębiania się w grafikę komputerową.
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
SDL_Surface
jest tylko zbiorem pikseli natomiastSDL_Texture
jestan efficient, driver-specific representation of pixel data
dzięki czemu można go stosować przez GPU wiki.libsdl.org/SDL_Texture . Czy to odpowiadało na twoje pytanie? Naprawdę powinieneśOdpowiedzi:
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 przypadkuSDL_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.
źródło
SDL_FillRect
jest to szybszeSDL_RenderFillRect
? P: stackoverflow.com/q/65450100/4632019SDL_Texture
jest ładowany do pamięci VRAM karty graficznej zamiast zwykłej pamięci RAM.źródło
Więcej informacji na ten temat można znaleźć w:
https://thenumbat.github.io/cpp-course/sdl2/05/05.html
Mam nadzieję, że Ci to pomoże!
źródło
Powierzchnie używają pamięci RAM, a tekstury używają karty graficznej, która jest szybsza niż powierzchnie.
źródło