2
BC6 / BC7テクスチャを反転するには?
OpenGLテクスチャにDDS画像ファイルをロードするためのコードがいくつかあります。D3D11で導入されたBC6およびBC7圧縮形式をサポートするように拡張したいのですが。DirectXとOpenGLは、テクスチャの起点が左上隅か左下隅かについて意見が分かれているため、DDSローダーは、ピクセルをOpenGLに渡す前に、Y軸に沿って各画像のピクセルを反転します。 圧縮されたテクスチャを反転すると、追加のしわが生じます。4x4ピクセルブロックの各行を反転することに加えて、各ブロック内のピクセルを反転する必要もあります。私はここで BC1 / BC2 / BC3ブロックをフリップするコードを見つけました。MSDNのブロック図から、BC3フリッピングコードをBC4およびBC5を処理するように適合させるのは簡単でした。BC6とBC7フォーマットはかなり多くても、威圧的に見えます。これらの形式を反転するための同様のビット調整のトリックはありますか、または各ブロックを完全に解凍して再圧縮する必要がありますか? 更新:テクスチャの座標がエクスポート時に誤って反転されていたため、テクスチャの反転が必要だったことがわかりました。両方のフリップを削除すると、コードが単純かつ高速になりました(Humusに感謝します!)。BC6 / BC7ブロックを反転することは、興味深い課題である可能性がありますが、元のシナリオとは関係ありません。