過去兩天我一直在研究DDS格式和編寫DDS紋理加載器,只是因爲好奇心,我遇到了一些我習以爲常的事情,「間距計算公式」 。我真的很好奇,爲什麼他們完全像他們一樣被指定,沒有任何正當理由。DirectDrawSurface(DDS)間距計算
例如,對於塊壓縮格式(DXT#N,BC#n)構成,全部基於S3TC,它被計算的方式是
MAX(1,(寬度+ 3)/ 4)* blockSize
因此,max給出了兩個值中較大的值,但爲什麼它能夠工作?爲什麼在紋理的寬度上添加3,然後將其分割爲「半邊界」?
在另一方面一些傳統類型是:
((寬度+ 1)>> 1)* 4
所以,右移位基本上是移動小數點在二進制基礎上,或除以二。那麼,爲什麼加1,然後除以2並乘以4?要失去最右邊的兩位?
,最後一個,對於其他格式:
(寬×BPP + 7)/ 8
我明白每個像素與最接近的字節邊界分割的位,但爲什麼添加7?
有人可以寫更多關於此?或者將我指向正確的方向?