この 2 日間、DDS フォーマットを研究し、DDS テクスチャ ローダーを書いていたのですが、好奇心だけで、「ピッチ計算式」という当たり前のことに出くわしました。正当な理由もなく、それらがそのまま正確に指定されている理由について、私は本当に興味があります。
たとえば、すべて S3TC に基づくブロック圧縮形式 (DXT#n、BC#n) の場合、計算方法は次のようになります。
max( 1, (幅+3) / 4 ) * ブロックサイズ
したがって、max は 2 つの値のうち大きい方を示しますが、なぜそれが機能するのでしょうか? テクスチャの幅に 3 を追加してから、「ニブル境界」に分割するのはなぜですか?
一方、いくつかのレガシータイプは次のとおりです。
((幅+1) >> 1) * 4
したがって、右シフトは基本的に基数をバイナリベースで移動するか、2 で割ることです。では、なぜ 1 を足してから 2 で割って 4 を掛けるのでしょうか? 右端の 2 ビットを失うには?
最後に、他の形式の場合:
( 幅 * bpp + 7) / 8
ピクセルあたりのビット数と最も近いバイト境界分割は理解していますが、なぜ 7 を追加するのですか?
誰かがこれについてもう少し書くことができますか? または、私を正しい方向に向けますか?