40 likes | 157 Views
Exercício. Deseja-se criar um frame-buffer para armazenar uma imagem high color (16 bits) por pixel de 1024 x 768 pixels. Calcule a quantidade de memória utilizada em bytes e os valores de L e b. Em seguida, calcule os endereços no frame-buffer dos pixels dados abaixo, sabendo-se que FB=8K:
E N D
Exercício • Deseja-se criar um frame-buffer para armazenar uma imagem high color (16 bits) por pixel de 1024 x 768 pixels. Calcule a quantidade de memória utilizada em bytes e os valores de L e b. Em seguida, calcule os endereços no frame-buffer dos pixels dados abaixo, sabendo-se que FB=8K: • (200,10) • (1003,108) • (101, 7) • (17,11)
Resolução • m = FB + [ x + Ly ] * b onde: m : é o endereço do início do pixel no FB FB: endereço inicial do Frame-Buffer L : número de pixels numa linha da imagem Neste caso, temos: • FB=8192 (8*1024 = 8K) • L=1024 • b=2 (16 bits / 8 = 2 bytes) • Número de bytes ocupados = 1024 x 768 x 2 = 1.572.864 = 1.536Kb = 1,5Mbytes
Resultado da Execução do Script C:\>perl fb.pl FB=8192 L=1024 b=2 Size: 1.572.864 bytes Para x= 200, y= 10 => m= 29.072 Para x=1003, y=108 => m=231.382 Para x= 101, y= 7 => m= 22.730 Para x= 17, y= 11 => m= 30.754
my $cols=1024; my $rows=768; my $FB = 8*1024; my $L = $cols; my $b = 2; print "FB=$FB, "L=$L\n", "b=$b\n"; print "Size: ", $cols * $rows * $b, " bytes\n"; print getAddr(200,10),"\n"; print getAddr(1003,108),"\n"; print getAddr(101,7),"\n"; print getAddr(17,11),"\n"; sub getAddr { my ($x,$y)=@_; print "x=$x, y=$y\n"; my $m = $FB + ($x+$L*$y)*$b; return $m; } Script