O hardware gráfico é otimizado para operações de matriz, operações de fragmento e operações de vetor. Simplificando, as matrizes quadradas são mais fáceis de lidar, pois os cálculos podem ser feitos em blocos (chamados fragmentos), o hardware é otimizado para operações de bloco, e é por isso que existem coisas como buffers de arquivo, a memória RAM não blit para disco até um bloco foi preenchido. O mesmo se aplica à memória gráfica.
O buffer de quadros é composto por fragmentos quadrados. Por exemplo, em uma tela com uma resolução de 800x600 e um espaço de cores RGB (0-255), existem pontos de 800x600 com 3 bytes por canal, há um total geral de 3x800x600 = 1.440.000 bytes para endereçar no buffer de quadros. Isso significa que existem 1.875 fragmentos endereçáveis com 256x256x3 bytes. Como os dados da textura são quadrados, facilita significativamente o mapeamento da matriz GRAM para a matriz do buffer de tela usando a escala bicúbica, onde, como se não fosse quadrado, o viés para o lado mais longo levaria mais tempo para calcular quando necessário. ser escalado.
Muitas APIs de gráficos aceitam dados de textura não quadrada, porque aceitam coordenadas de mapeamento UV como dados de ponto flutuante; no entanto, uma vez enviado à GPU, o preenchimento é adicionado aos dados de textura, porque as proporções reais da imagem não alteram o mapeamento parece não ser afetado, no entanto, o preenchimento é adicionado aos dados de textura, porque a GPU gosta de endereçá-los como um quadrado perfeito.
Portanto, se uma imagem de 100x1024 for usada e uma imagem de 1024x1024, o que significa que 946.176 bytes são desperdiçados. Ainda mais se a composição precisar ser feita, pois será necessário adicionar um canal alfa para indicar que os dados do preenchimento não devem afetar a textura composta.