Los formatos de textura comprimida de GPU como DXT / BC / ETC están diseñados específicamente para leerse directamente desde su forma comprimida. No necesitan ser desempaquetados en un búfer RGBA sin procesar.
La forma en que esto funciona es que cada bloque de texels (a menudo 4x4) ocupa un número fijo de bits, por lo que sabemos exactamente a qué distancia en el búfer buscar un texel en particular, y estos bloques se pueden descomprimir sin leer todo el entorno / información de textura anterior. Las GPU contienen hardware especializado que descomprime solo los bloques de texel solicitados según sea necesario para cumplir con las solicitudes de muestreo de textura de sus sombreadores.
Esto contrasta con formatos como jpg y png, donde la cantidad de espacio que ocupa cada texel puede variar en la imagen (áreas detalladas que ocupan más datos, áreas predecibles que ocupan menos), por lo que para encontrar un texel en particular, debe descomprimir toda la imagen, o al menos fragmentos grandes / distribuidos de ella. Pero debido a que pueden comprimir selectivamente áreas predecibles de una textura, tienden a comprimir imágenes a tamaños más pequeños para almacenarlas en un disco o transmitirlas a través de una red que lo que obtenemos de formatos compatibles con GPU. Diferentes estrategias para diferentes usos.
En general, hacer múltiples preguntas debe hacerse a través de múltiples publicaciones, pero como esta es una respuesta bastante corta, también llegaré al punto 3:
" Framebuffer " es solo un bit particular de memoria de video que hemos decidido usar para almacenar la imagen compuesta que queremos presentar en la pantalla. Tenga en cuenta los detalles en la respuesta de JarkkoL, donde en algún hardware especializado podríamos elegir ubicar este búfer en una parte particular de nuestra memoria de video disponible que está optimizada para las necesidades de ancho de banda de los objetivos de renderizado.