Formaty tekstur skompresowane przez GPU, takie jak DXT / BC / ETC, są specjalnie zaprojektowane do odczytu bezpośrednio z ich skompresowanej postaci. Nie trzeba ich rozpakowywać do surowego bufora RGBA.
Działa to tak, że każdy blok tekstur (często 4x4) zajmuje pewną stałą liczbę bitów - dzięki czemu wiemy dokładnie, jak daleko w buforze jest szukanie konkretnego tekstu - i te bloki można zdekompresować bez odczytywania całego otoczenia / poprzednia informacja o teksturze. Procesory graficzne zawierają wyspecjalizowany sprzęt, który dekompresuje tylko żądane bloki tekstu w razie potrzeby, aby spełnić żądania próbkowania tekstur od twoich shaderów.
Jest to w przeciwieństwie do formatów takich jak jpg i png, w których ilość miejsca zajmowanego przez każdy texel może się różnić na obrazie (szczegółowe obszary zajmują więcej danych, przewidywalne obszary zajmują mniej), więc aby znaleźć konkretny tekstel, należy go rozpakować cały obraz lub przynajmniej jego duże / rozproszone fragmenty. Ponieważ jednak mogą selektywnie kompresować przewidywalne obszary tekstury, mają tendencję do kompresji obrazów do mniejszych rozmiarów w celu przechowywania ich na dysku lub transmisji w sieci niż w przypadku formatów przyjaznych GPU. Różne strategie dla różnych zastosowań.
Zasadniczo zadawanie wielu pytań powinno odbywać się za pośrednictwem wielu postów, ale ponieważ jest to dość krótka odpowiedź, również trafię w punkt 3:
„ Framebuffer ” to tylko szczególna pamięć wideo, którą postanowiliśmy wykorzystać do przechowywania skomponowanego obrazu, który chcemy zaprezentować na ekranie. Zwróć uwagę na szczegóły w odpowiedzi JarkkoL, gdzie na niektórych specjalistycznych urządzeniach możemy zlokalizować ten bufor w określonej części naszej dostępnej pamięci wideo, która jest zoptymalizowana pod kątem przepustowości celów renderowania.